【发布时间】:2022-01-28 08:29:40
【问题描述】:
我正在寻找一个 SQL 脚本来查找过去 1 小时内有超过 2 个条目的数据。 我有一张包含 user_id 和 event_time 的表。我想要一种方法来确定 user_id 在过去 1 小时内是否有超过 1 个条目。
到目前为止我已经尝试过:
- 创建临时表以放置所有重复条目:
SELECT a.*
INTO #temp
FROM Table a
JOIN (
SELECT USERID, COUNT(*) AS Duplicates
FROM Table
GROUP BY userid
HAVING count(*) > 1
) AS b ON a.userid = b.USERID
- 运行 self Joins 以获取时差小于等于 1 小时的记录:
SELECT a.*
FROM #temp a
INNER JOIN #temp b ON a.userid = b.USERID
WHERE DATEDIFF(hour, a.EVENTTIME, b.EVENTTIME) = 1
运行第一个脚本后,它会提供大约 800 多行重复数据。但是在运行第二个脚本后,我得到的数据是数千。 有人可以帮忙吗?
【问题讨论】:
-
第一个脚本给出所有重复项 (800+) 第二个脚本将其限制为多个条目在一小时内的那些
-
请提供一些样本数据和预期结果
-
我们需要一个minimal reproducible example,其中包含示例数据、所需结果、实际结果和您的查询。
-
所以基本要求是这样的:假设我有一个用户 ID,它全天都有多个 event_time 条目。我只想过滤掉事件时间差小于 1 小时的条目。
-
@Rathore 如果你有事件持续一整天,并且所有相邻事件之间的时间差小于一小时,你应该在这种情况下将它们全部删除吗?
标签: sql sql-server database tsql