在MS SQL中按ID和时间间隔分组

香蕉9000

我正在尝试编写一个查询,该查询在一个时间范围内将ID分组。

现实世界的场景:我想在5秒内看到由同一ID创建的行。

SELECT top 10 
Id, 
CreatedOn
FROM Logs
where ((DATEPART(SECOND, CreatedOn) + 5) - DATEPART(SECOND, CreatedOn)) < 10
GROUP BY 
DATEPART(SECOND, CreatedOn),
Id,
CreatedOn
order by CreatedOn desc

这不是很正确,但是我感觉自己走对了。

提前致谢

蒂姆·比格莱森(Tim Biegeleisen)

您可以尝试在条件ID匹配的情况下进行查询,并且自纪元以来的秒数在匹配记录的5秒内:

SELECT
    t1.Id,
    t1.CreatedOn
FROM logs t1
WHERE EXISTS (SELECT 1 FROM logs t2
              WHERE t1.Id = t2.Id AND
                    t1.CreatedOn <> t2.CreatedOn AND
                    ABS(DATEDIFF(SECOND, t1.CreatedOn, t2.CreatedOn)) <= 5)
ORDER BY
    t1.CreatedOn DESC;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章