首页 » 随口说 » 正文

SQL小技巧:分组时按每几小时分组

先看个图, 我瞎jb填充了一些数据

lgc

一、按时间分组  这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

  

lgc

 当然,大家做分组往往是要配合聚合函数的(譬如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  

lgc

需要的小伙伴,拿去用,不谢。

发表评论