如何筛选表中存在两条后续时间戳在30分钟内的其他行的所有行?
筛选符合条件的时间戳行
需求说明
筛选数据表中满足以下条件的所有行:该行存在另外两条未来时间的时间戳,且这两条时间戳都在该行时间戳的30分钟范围内。
示例数据表
TIMESTAMP ID 7/20/2018 8:57:25 1 7/20/2018 8:59:25 2 7/20/2018 8:58:25 3 7/20/2018 9:57:25 4 7/20/2018 10:12:00 5 7/20/2018 10:12:15 6
筛选结果
TIMESTAMP ID 7/20/2018 8:57:25 1 7/20/2018 9:57:25 4
实现方案(以SQL为例)
通过自连接统计每行对应的符合条件的未来行数,筛选出数量≥2的行:
SELECT t1.TIMESTAMP, t1.ID FROM your_table t1 JOIN your_table t2 ON t2.TIMESTAMP > t1.TIMESTAMP AND t2.TIMESTAMP <= DATEADD(minute, 30, t1.TIMESTAMP) GROUP BY t1.TIMESTAMP, t1.ID HAVING COUNT(t2.ID) >= 2;
逻辑说明
- 自连接表
t1和t2,t2代表t1时间之后的行 - 限定
t2的时间戳落在t1的未来30分钟范围内 - 分组统计每个
t1行对应的符合条件的t2行数量,仅保留数量≥2的t1行
内容的提问来源于stack exchange,提问作者rhetoric3
相关产品推荐
相关产品推荐

