by mysql 按每分钟group_SQL小技巧:分组时按每几小时分组

先看个图, 我瞎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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值