我有一张桌子
event_id eventtypeid eventtimestamp
它描述了可以彼此接近的时间事件。我想找到事件类型相同且时间戳之间的差异不超过 3 毫秒的事件对。
在sql中一般可以吗?我该如何提出这样的要求?
先感谢您。
像这样的查询通常最好使用窗口函数来解决:
SELECT eventtypeid, first, second, diff
FROM (
SELECT eventtypeid, event_id AS first, lead(event_id) OVER w AS second,
lead(eventtimestamp) OVER w - eventtimestamp AS diff
FROM event_table
WINDOW w AS (PARTITION BY eventtypeid ORDER BY eventtimestamp)
) sub
WHERE diff <= interval '3 milliseconds';
Run Code Online (Sandbox Code Playgroud)
这通常比自连接快得多。
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |