mysql 如何按照时间周期分组统计?大神求教啊。

mysql 如何按照时间周期分组统计?大神求教啊。,第1张

假设你的表为 ta 日期字段是 dt

那么,以 2015-01-01为起始日,每5天累总计数为:

select datediff(dt, '2015-01-01') div 5 as d5 , count(*)

from ta

group by (datediff(dt, '2015-01-01') div 5)

234567891011121314 -- time_str '2016-11-20 04:31:11'-- date_str 20161120 select concat(left(date_format(time_str, '%y-%m-%d %h:%i'),15),'0') as time_flag, count(*) as count from `security`.`cmd_info` where `date_str`=20161120 group by time_flag order by time_flag-- 127 rows select round(unix_timestamp(time_str)/(10 * 60)) as timekey, count(*) from `security`.`cmd_info` where `date_str`=20161120 group by timekey order by timekey-- 126 rows -- 以上2个SQL语句的思路类似——使用「group by」进行区分,但是方法有所不同,前者只能针对10分钟(或1小时)级别,后者可以动态调整间隔大小,两者效率差不多,可以根据实际情况选用 select concat(date(time_str),' ',hour(time_str),':',round(minute(time_str)/10,0)*10), count(*) from `security`.`cmd_info` where `date_str`=20161120 group by date(time_str), hour(time_str), round(minute(time_str)/10,0)*10-- 145 rows select concat(date(time_str),' ',hour(time_str),':',floor(minute(time_str)/10)*10), count(*) from `security`.`cmd_info` where `date_str`=20161120 group by date(time_str), hour(time_str), floor(minute(time_str)/10)*10-- 127 rows (和 date_format 那个等价)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6113205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存