SQL でレコードの前半を表示するには、SELECT TOP 50 PERCENT * FROM TableName; を使用します。同様に、レコードの最後の 50%を表示する解決策はありますか?そのテーブルにどれだけのレコードが存在するかわからないと考えてください。
4074 次
3 に答える
3
反対の順序で並べ替えるだけで、必要に応じて外側の選択で再度並べ替えます
select * from
(
select top 50 percent *
from table
order by col1 desc
) order by col1 asc
于 2013-07-08T17:04:59.610 に答える
0
NTILE(n)
ウィンドウ関数は、このようなタイプの作業用に設計されています。結果セットを同じ行数のグループに分割し、1 から までの番号を付けます(count of rows)/n
(この分割が整数にならない場合、微妙な違いがあります。ドキュメントを参照してください)。
;with cte as(select *, ntile(2) over(order by colname) as rn from tablename)
select * from cte where rn = 2
これは、結果セットが 2 つのグループに分割されることを意味し、前半は get rn = 1
、後半はrn = 2
.
于 2015-09-03T19:08:16.157 に答える
0
後でレコードが挿入されるほど高くなるテーブルの ID があると仮定します。
おそらく、それをスクリプト化する必要があります。擬似コード:
num = numRecords(table) / 2
SELECT * FROM table ORDER BY ID DESC LIMIT 'num'
または、選択した言語に応じて、その趣旨の何か。
これまたはいくつかの内部選択のいずれかであり、可能な限り回避しようとしています。
于 2013-07-08T17:04:50.117 に答える