Anda dapat melakukannya dengan lag()
fungsi jendela di atas partisi oleh stream_id yang dipesan oleh stempel waktu. lag()
fungsi memberi Anda akses ke baris sebelumnya di partisi; tanpa nilai lag, itu adalah baris sebelumnya. Jadi jika partisi pada stream_id diurutkan berdasarkan waktu, maka baris sebelumnya adalah event sebelumnya untuk stream_id tersebut.
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");