を使用して、グループとランクによって結果の確認:私は何をしたいかは、私は次のような構造を持つテーブルがSQL
id timestamp area
717416915 18:30:53.063 25.691601
717416915 18:31:34.863 31.200506
717416915 18:32:23.665 25.690088
1994018321 18:32:45.467 37.409171
1994018321 18:33:19.612 37.409171
424164505 18:36:16.634 18.22091
424164505 18:36:36.899 18.210754
424164505 18:37:08.614 19.829266
2394018356 18:37:27.231 79.31705
は、私がid
当たりの面積を特定できるような方法で値を要約することですtimestamp
で注文します。私が最初にarea
値を望んでいた場合例えば、それは次のようになります。
id timestamp area_1
717416915 18:30:53.063 25.691601
1994018321 18:32:45.467 37.409171
424164505 18:36:16.634 18.22091
2394018356 18:37:27.231 79.31705
そして、私はid
毎秒area
値を取得したい場合には、次のようになります。
id timestamp area_2
717416915 18:31:34.863 31.200506
1994018321 18:33:19.612 37.409171
424164505 18:36:36.899 18.210754
私がいることを理解します私は時間単位でソートし、最初の値をid
で特定する必要があります。私はこれをどうやって行うのかよく分かりません。私がやったことは次の通りです(これは実行中ではありません。なぜなら、OVER
関数の使用方法はまだ不明です)。
WITH T AS (
SELECT * OVER(PARTITION BY a.id ORDER BY a.timestamp) AS rnk
FROM mytable AS a
)
SELECT area as area_1
FROM T
WHERE rnk = 1
GROUP BY a.id
ORDER BY a.timestamp;
私はid
あたり、後続の面積値を取得するには、などrnk=2
を使用することを計画していました。
「id = 2394018356」というレコードはありません – wildplasser
@wildplasser good catch;固定質問。 – djq