ROW_NUMBER()を使用している場合、これは比較的簡単に実行できます。
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER (ORDER BY a, b, c, d) AS record_id,
*
FROM
yourTable
)
AS data
WHERE
(record_id + 360) % 720 = 0
ROW_NUMBER()
(idフィールドの両方で一意であるとのギャップがあってはならないとして、これは重要です)、すべてのデータをシーケンシャル識別子を与えます。また、データの順序を(ORDER BY a, b, c, d)
に定義します。
モジュロ(多くの場合、%
演算子)を使用すると、レコードが720番目のレコード、1440番目のレコードなどであるかどうかをテストできます(720%720 = 0なので)。
次に、id値を360でオフセットすると、結果セットの開始点を変更できます。
EDIT質問を再読み込みした後
、私はあなたがすべての第720のレコードを望んでいない参照が、一様に720件のレコードを選択しました。このように
、(SELECT COUNT(*)/720 FROM yourTable)
で720
を交換し、正確に720レコードの結果をできるようになります丸め条件を無視(SELECT (COUNT(*)/720)/2 FROM yourTable)
EDIT
で360
を交換してください。これには、非整数値を使用する必要があり、モジュロの結果は1未満です。
WHERE
(record_id + (SELECT COUNT(*) FROM yourTable)/1440.0)
%
((SELECT COUNT(*) FROM yourTable)/720.0)
<
1.0
どのブランドのSQLですか?あなたがROW_NUMBER()を持っていれば、それは大いに役立ちます。また、720のサンプリング間隔と定義された開始点***は、データに順序があることを意味します。 - したがって、データはどの順序で表示されるべきですか? – MatBailie
ROW_NUMBER()OVER(TransactionDateで注文)AS RowNumber、 –