Mysql Group By 24小时间隔

标签 mysql group-by

如何将Test表的记录按时间间隔分组,从每天19:00开始到次日18:59结束?

表:测试

id  creation_date   name
1   2014-01-01      17:52:27    a
2   2014-01-01      18:50:00    b
3   2014-01-01      19:00:00    c
4   2014-01-03      18:59:00    e
5   2014-01-03      12:00:00    f

期望的结果是:

Interval                                    Number of Occurrences
2013-31-31 19:00:00 - 2014-01-01 18:59:59   2
2014-01-01 19:00:00 - 2014-01-02 18:59:59   1
2014-01-02 19:00:00 - 2014-01-03 18:59:59   1
2014-01-03 19:00:00 - 2014-01-04 18:59:59   1

最佳答案

试试这个:

SELECT MIN(creation_date), MAX(creation_date), COUNT(*) AS Occurrences 
FROM test
GROUP BY DATE(DATE_SUB(creation_date, INTERVAL 19 HOUR))

工作演示:http://sqlfiddle.com/#!2/aa7583/6

对于格式化部分,使用这个:

SELECT CONCAT( CONCAT(DATE(DATE_SUB(creation_date, INTERVAL 19 HOUR)),' 19:00:00') , ' - ' , CONCAT(DATE(DATE_ADD(creation_date, INTERVAL 5 HOUR)), ' 18:59:00') ) AS Interval, COUNT(*) AS Occurrences 
FROM test
GROUP BY DATE(DATE_SUB(creation_date, INTERVAL 19 HOUR))

关于Mysql Group By 24小时间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910002/

相关文章:

mysql - 在 wordpress 中使用 get_user 进行排序

mysql - 在 select 语句中使用 IF 逐月对值进行分组

python - 使用转换计算数据框中的特定值和聚合结果

python - 使用groupby apply生成Series时保留DataFrame的索引

mysql - 如何统计 MySQL 中所有满足条件的不同值?

mysql - 如何在Entity中建立三个表之间的关系?

mysql - 仅当它没有日期高于现在的行时才从连接更新

php - mysql 多表分页

MySQL 在更新查询中添加月份并修改日期

python - 在 Python 中使用奇数创建行计数