SQL Server查询每小时计数

时间:2017-03-17 14:56:20

标签: sql-server

使用SQL Server 2014 - 我正在努力解决使用2个条件搜索/过滤的查询(其中一个是每小时)。我发现了各种单独工作的解决方案,但我很难将它们合二为一。

我有

UserID, event1, timestamp  

我想选择:如果UserID每小时(24小时)每小时在event1列中记录10次或更多次

1 个答案:

答案 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