SQL 计数每 2 小时分组一次

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

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

我有一张这样的 table :

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

提前谢谢你,
史蒂夫

最佳答案

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

关于SQL 计数每 2 小时分组一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829679/

相关文章:

sql - 使用 row_to_json 的 Postgres 递归查询

sql - DISTINCT 值的表索引

mysql - 根据条件计算记录

php - 需要在该文件中添加 count(*) 和 if 语句

mysql - SELECT DISTINCT(column) FROM table on an indexed column 的计算复杂度

php - MySQL:计算子级并获取父级行

mysql - SQL 按 ASC 和 DESC 排序

sql - 合并多个表中的值而不重复

php - 获取子文件夹的数量

Pandas 中的 Excel Sumproduct