आप इसे 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");