Bạn có thể thực hiện việc này với mã lag () >
chức năng cửa sổ trên một phân vùng bởi stream_id được sắp xếp theo dấu thời gian. lag ()
chức năng cung cấp cho bạn quyền truy cập vào các hàng trước đó trong phân vùng; không có giá trị trễ, nó là hàng trước đó. Vì vậy, nếu phân vùng trên stream_id được sắp xếp theo thời gian, thì hàng trước đó là sự kiện trước đó cho 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");