我有一个MySQL表,每行都有时间戳值。我的目标是将金额列的值和每天从05:30:00开始的自定义24小时间隔进行分组。
输入:
timestamp amount
-------------- ------
2015-01-19 08:30:12 4
2015-01-19 15:37:40 2
2015-01-20 01:57:38 2
2015-01-20 07:10:07 4
2015-01-20 22:10:38 2
2015-01-21 08:35:55 4
预期:
interval SUM(amount)
------------- -----------
2015-01-19 05:30:00 - 2015-01-20 05:30:00 8
2015-01-20 05:30:00 - 2015-01-21 05:30:00 6
2015-01-21 05:30:00 - 2015-01-22 05:30:00 4
我已尝试实施此处提供的解决方案Groupinginto interval of 5 minutes within a time range和此处Mysql Group By 24 hour intervals - 但未成功。
答案 0 :(得分:3)
您可以通过减去5.5小时并按日期汇总来完成此操作:
select date_add(date(timestamp - interval (5*60 + 30) minute), interval (5*60 + 30) minute) as interval_start,
date_add(date(timestamp - interval (5*60 + 30) minute), interval (24*60 + 5*60 + 30) minute) as interval_end,
count(*) as cnt
from t
group by date(timestamp - interval (5*60 + 30) minute)
order by interval_start;