2012-08-06 90 views
3

如何计算和每2小时分组?每2小时计算一次SQL计数

我有这样的一个表:

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

您正在使用哪个数据库? – 2012-08-06 13:55:28

+0

SQL Server 2008 R2 – user609511 2012-08-06 14:11:29

回答

2

对于支持小时()函数的数据库,你可以使用:

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等。

+0

我使用SQL 2008 R2,显然Hour不是SQL 2008 R2的功能 – user609511 2012-08-06 14:14:37

+0

尝试用DATEPART(hh,TheTime)替换小时(TheTime)。 – 2012-08-06 14:16:20

+0

很酷,谢谢 – user609511 2012-08-06 14:29:14

0

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

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