4

我如何每 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

提前谢谢你,史蒂夫

4

2 回答 2

4

对于支持 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 的时间等。

于 2012-08-06T14:11:24.237 回答
-1

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

Select 
  Sum(Case When Datepart(hh, TheTime) Between 8 and 9 Then 1 Else 0 End) TheTime_8_10,
  ....
于 2012-08-06T13:58:46.980 回答