如何按时间间隔对表 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))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)