先看个图, 我瞎jb填充了一些数据
一、按时间分组 这SQL太简单 (假设颗粒度只到小时)
select mykey,DATE_FORMAT(dtime,’%Y-%m-%d %H’) from test
GROUP BY DATE_FORMAT(dtime,’%Y-%m-%d %H’) ,mykey
就不贴图了
二、如果要求是按照 每隔2小时或3小时,或5小时 来进行分组 呢
其实 有个小技巧在这里, 使用 div函数 (整除)
譬如 select 10 div 2 ——5
select 7 div 3 —– 2
语句就变成了这样 (譬如按5小时,要按其他小时 自己改)
select mykey,DATE_FORMAT(dtime,’%Y-%m-%d‘),hour(dtime) div 5 from test
GROUP BY DATE_FORMAT(dtime,’%Y-%m-%d‘),hour(dtime) div 5,mykey
当然,大家做分组往往是要配合聚合函数的(譬如sum),但是 我tmd弄测试数据时 弄的是字符串,不高兴改了。累,天太热。
于是,把语句改了改,把每隔5小时的mykey 叠加起来
select GROUP_CONCAT(mykey),DATE_FORMAT(dtime,’%Y-%m-%d’) as dtime,hour(dtime) div 5 from test
GROUP BY DATE_FORMAT(dtime,’%Y-%m-%d’) ,hour(dtime) div 5
需要的小伙伴,拿去用,不谢。