我有一个信息数据集,可以在事件发生时记录事件;我希望能够在白天的不同时间段汇总这些数据。 我的RAW数据只是用事件的系统时间标记时间戳。 我有一个SQL查询,可以计算一小时内发生的事件数。
三天内的示例或RAW数据,
Time_Period Count
------------------------------
29/07/13 08:00:00 2
29/07/13 09:00:00 19
29/07/13 10:00:00 21
29/07/13 11:00:00 30
29/07/13 12:00:00 21
29/07/13 13:00:00 24
29/07/13 14:00:00 18
29/07/13 15:00:00 35
29/07/13 16:00:00 17
29/07/13 17:00:00 3
30/07/13 09:00:00 20
30/07/13 10:00:00 47
30/07/13 11:00:00 22
30/07/13 12:00:00 19
30/07/13 13:00:00 26
30/07/13 14:00:00 30
30/07/13 15:00:00 20
30/07/13 16:00:00 26
30/07/13 17:00:00 10
30/07/13 18:00:00 1
31/07/13 08:00:00 1
31/07/13 09:00:00 23
31/07/13 10:00:00 28
31/07/13 11:00:00 18
31/07/13 12:00:00 25
31/07/13 13:00:00 17
31/07/13 14:00:00 17
31/07/13 15:00:00 36
31/07/13 16:00:00 22
31/07/13 17:00:00 8
31/07/13 20:00:00 1
然而,我想要实现的是获取此数据并将其概括为忽略字段的日期部分(不是时间,就像其他人想要的那样)
我会得到一个看起来像这样的结果。 (上述3天)
Time_Period Sum_Count
-----------------------
08:00:00 23
09:00:00 89
10:00:00 71
11:00:00 67
12:00:00 72
13:00:00 71
14:00:00 55
15:00:00 97
16:00:00 49
17:00:00 12
18:00:00 1
我可以在代码中执行此操作并将答案转储回临时表;但是,在SQL中正确地执行此操作会使从不同系统调用更容易。
答案 0 :(得分:1)
SELECT
HourMinuteSecond=CONVERT(TIME,YOURDATE),
GroupCount=COUNT(*)
FROM
YOURTABLE
GROUP BY CONVERT(TIME,YOURDATE)
答案 1 :(得分:0)
简单如下:
select count(*),
convert(sysname,DATEPART(HOUR,Time_Period ))+':'+
convert(sysname,DATEPART(minute,Time_Period ))+':'+
convert(sysname,datepart(second,Time_Period ))
from YourTable
group by
convert(sysname,DATEPART(HOUR,Time_Period ))+':'+
convert(sysname,DATEPART(minute,Time_Period ))+':'+
convert(sysname,datepart(second,Time_Period ))
如果您使用SQL2012,则可以使用 TIMEFROMPARTS 功能构建强类型时间。如果您使用早期版本,请在上面的示例中对齐字符串并添加 ORDER BY 子句