您可以使用窗口函数来检索下一条记录记录中给出的当前记录。
在函数上使用ORDER BY以确保事物符合时间戳顺序并使用PARTITION保持时钟分离,您可以为每行找到它后面的行。
WITH links AS
(
SELECT
id, ts, clock, LEAD(ts) OVER (PARTITION BY clock ORDER BY ts) AS next_ts
FROM myTable
)
SELECT * FROM links
WHERE
EXTRACT(EPOCH FROM (next_ts - ts)) > 10
然后您可以比较时间戳。
窗口功能https://www.postgresql.org/docs/current/static/functions-window.html
或者,如果你喜欢使用派生表,而不是与条款。
SELECT * FROM (
SELECT
id, ts, clock, LEAD(ts) OVER (PARTITION BY clock ORDER BY ts) AS next_ts
FROM myTable
) links
WHERE
EXTRACT(EPOCH FROM (next_ts - ts)) > 10