SQL计数每2小时进行一次分组

时间:2012-08-06 13:53:03

标签: sql count group-by sql-server-2008-r2

我怎样才能每2小时计算和分组一次?

我有一张这样的桌子:

Id  TheTime
--  -------
1   07/07/2012 08:49:02
2   07/07/2012 09:36:39
3   07/07/2012 10:36:39
4   07/07/2012 12:36:39
5   07/07/2012 13:36:39

我怎样才能转换成:

TheTime_08_10  TheTime_10_12  TheTime_12_14 etc.. until TheTime_22_00
-------------  -------------  ------------              -------------
       2              1            2

提前谢谢你, 甜菊

2 个答案:

答案 0 :(得分:2)

对于支持Hour()函数的数据库,您可以使用:

SELECT Floor(Hour(TheTime)/2)*2, COUNT(*) FROM TimeTable GROUP BY Floor(Hour(TheTime)/2)

你会得到这样的东西:

Floor(...) | Count(*)
---------------------
8          | 1
10         | 3
12         | 5
16         | 1

第一列是开始时间 - 8表示从8:00到9:59的时间等。

答案 1 :(得分:0)

StackOverflow上有很多此类问题的例子。使用简单的案例陈述。确保您了解有关边界的业务规则。

Select 
  Sum(Case When Datepart(hh, TheTime) Between 8 and 9 Then 1 Else 0 End) TheTime_8_10,
  ....