行のランキング時に、行の順序とその内部のデータ範囲の両方を考慮に入れて、どのような種類のクエリがサポートされますか?データは同一順序で処理する必要があり、範囲境界線を[Time] > 2 or [Time] < -2
として定義します。オーダーとデータ範囲に基づくパーティション行
編集:つまり、行をリストとして扱い、ParitionIdが行のリストのインデックスであるリストのリストに分割したいとします。
編集2:[時間]値が希望の範囲外になるたびに、パーティションIDが1ずつ増えることを忘れてしまいました。この要件は、GROUP BY
を使用して行をバケット化することはできないことを意味します。[時間]が範囲内または外にある場合は、trueまたはfalseを返すcase文を使用できます。
MS SQL Serverの2014スキーマのセットアップ:
CREATE TABLE foobartable
([ID] int Identity(1,1) NOT NULL, [Time] float, [X] float, [Y] float)
;
INSERT INTO foobartable
([Time], [X], [Y])
VALUES
(0.0, 1, 1),
(1.0, 1, 1),
(2.0, 1, 1),
(3.0, 1, 1),
(2.0, 1, 1),
(1.0, 1, 1),
(-1.0, 1, 1),
(-2.0, 1, 1),
(-3.0, 1, 1),
(-2.0, 1, 1),
(-1.0, 1, 1),
(0.0, 1, 1),
(1.0, 1, 1),
(2.0, 1, 1),
(3.0, 1, 1),
(2.0, 1, 1)
;
望ましい結果
| Id | PartitionId |
|----|-------------|
| 1 | 0 |
| 2 | 0 |
| 3 | 0 |
| 4 | 1 |
| 5 | 2 |
| 6 | 2 |
| 7 | 2 |
| 8 | 2 |
| 9 | 3 |
| 10 | 4 |
| 11 | 4 |
| 12 | 4 |
| 13 | 4 |
| 14 | 4 |
| 15 | 5 |
| 16 | 6 |
。 –
@SeanLange私は、行の順番に基づいて行にランクを割り当て、その行内のデータに基づいて、ある範囲内にあるかどうかを判断したいと考えています。必要な結果は、行IDと目的のパーティション番号だけです。これは、リストをリストのリストに分割し、各リストのインデックスがパーティションIDであるようなものです。 – mortalapeman
時間= 2または時間= -2の場合はどうですか? または[時間]> = 2または[時間] <= -2を意味しますか –