私はそうのようなテーブルを持っている:選択n番目の最後の値に
id device group
-----------------
1 a 1000
2 a 1000
3 b 1001
4 b 1001
5 b 1001
6 b 1002
8 a 1003
9 a 1003
10 a 1003
11 a 1003
12 b 1004
13 b 1004
すべてのidのとグループが連続しています。私が望むのは、グループとデバイスに基づいてid
とdevice
を選択することです。ページ区切りタイプの選択と考えてください。最後group
を取得する簡単な内部の選択ですが、どのように私は最後から二番目のグループ、または第三の最後のグループを選択しない - など
私はこのような行番号機能試してみました:
SELECT * FROM
(SELECT *, ROW_NUMBER() OVER (PARTITION BY device ORDER BY group DESC) rn FROM data) tmp
WHERE rn = 1;
を.. rn
を変更すると、以前のグループではなく、以前のIDが返されます。
私はこれらの結果を収容できセレクションで終わるしたいと思います:
デバイスは、グループ=最新=:
id device group
10 a 1003
11 a 1003
デバイス=、グループを=最新 - 1:
id device group
1 a 1000
2 a 1000
これを達成する方法を知っている人はいますか?
編集:
ユースケースは、30秒ごとにデータを送信する車でデバイスを有効にGPS、です。今日はドライブに乗ることを想像してみてください。まず店に行って家に帰る。最初の旅行はあなたが店に運転しています。 2回目の旅は、あなたが帰ってきたことです。私はそれらの旅行を地図上に示したいと思いますが、それはあなたが最後の旅行を特定する必要があることを意味します。
あなたは、デバイスごとに複数の行を表示しなければならないのはなぜですか? –
想像以上に話すなら、実際のユースケースは車に搭載されたgpsデバイスの旅行であり、私はその旅行全体を見せたいと思います。 – Jorg
[X Y problem](http://mywiki.wooledge.org/XyProblem)のように聞こえます。実際にここで何をしようとしていますか? – Bohemian