使用SQL Server 2014 - 我正在努力解决使用2个条件搜索/过滤的查询(其中一个是每小时)。我发现了各种单独工作的解决方案,但我很难将它们合二为一。
我有
UserID, event1, timestamp
我想选择:如果UserID每小时(24小时)每小时在event1列中记录10次或更多次
答案 0 :(得分:4)
试试这个:
SELECT UserID, COUNT(event1) as EventsPerHour, DATEPART(HH, timestamp) as Hour
FROM [TABLE]
GROUP BY UserID, DATEPART(HH, timestamp)
HAVING COUNT(event1) >= 10
修改强>
如果您的表包含超过24小时的数据,您可能需要指定要过滤的日期:
只有今天的数据:
SELECT UserID, COUNT(event1), DATEPART(HH, datetime)
FROM [TABLE]
WHERE DATEPART(HH, datetime) = DATEPART(DAY, getdate())
GROUP BY UserID, DATEPART(HH, datetime)
HAVING COUNT(event1) >= 10
仅过去24小时内的数据:
SELECT UserID, COUNT(event1), DATEPART(HH, datetime)
FROM [TABLE]
WHERE datetime between GETDATE() and DATEADD(HH, -24, GETDATE())
GROUP BY UserID, DATEPART(HH, datetime)
HAVING COUNT(event1) >= 10