これは、 lag()
>
タイムスタンプ順に並べられたstream_idによるパーティション上のウィンドウ関数。 lag()
関数を使用すると、パーティション内の前の行にアクセスできます。ラグ値がない場合は、前の行です。したがって、stream_idのパーティションが時間順に並べられている場合、前の行はそのstream_idの前のイベントです。
SELECT stream_id, lag(id) OVER pair AS start_id, id AS end_id,
("timestamp" - lag("timestamp") OVER pair) AS diff
FROM my_table
WHERE diff > interval '2 minutes'
WINDOW pair AS (PARTITION BY stream_id ORDER BY "timestamp");