首页 > 数据库技术 > 详细

mysql按天,小时,半小时,N分钟,分钟进行数据分组统计

时间:2019-04-17 18:04:23      阅读:369      评论:0      收藏:0      [点我收藏+]

表为:track
数据结构如下所示:

技术分享图片

按天统计

1 SELECT DATE(TimeStart) AS date, COUNT(*) AS num
2 FROM track
3 WHERE Flag = 0 AND Duration >= 300 
4 GROUP BY date
5 ORDER BY date;

按小时统计

1 SELECT DATE_FORMAT(TimeStart, %Y-%m-%d %H:00:00) AS time, COUNT(*) AS num
2 FROM track
3 WHERE Flag = 0 AND Duration >= 300
4 GROUP BY time
5 ORDER BY time;

结果:

技术分享图片

按半小时统计

 1 SELECT time, COUNT( * ) AS num 
 2 FROM
 3     (
 4     SELECT Duration,
 5         DATE_FORMAT(
 6             concat( date( TimeStart ),  , HOUR ( TimeStart ), :, floor( MINUTE ( TimeStart ) / 30 ) * 30 ),
 7             %Y-%m-%d %H:%i 
 8         ) AS time 
 9     FROM tarck
10     WHERE Flag = 0  AND Duration >= 300 
11     ) a 
12 GROUP BY DATE_FORMAT( time, %Y-%m-%d %H:%i ) 
13 ORDER BY time;

结果:

技术分享图片

按N分钟统计

 1 SELECT time, COUNT( * ) AS num 
 2 FROM
 3     (
 4     SELECT Duration,
 5         DATE_FORMAT(
 6             concat( date( TimeStart ),  , HOUR ( TimeStart ), :, floor( MINUTE ( TimeStart ) / 10 ) * 10 ),
 7             %Y-%m-%d %H:%i 
 8         ) AS time 
 9     FROM tarck
10     WHERE Flag = 0  AND Duration >= 300 
11     ) a 
12 GROUP BY DATE_FORMAT( time, %Y-%m-%d %H:%i ) 
13 ORDER BY time;

思路:将datetime类型的时间转化为相应时间片的时间,例如将‘2017-03-01 01:08:19’ 转化为‘2017-03-01 01:00:00’,然后 group by即可。

按分钟统计

1 SELECT DATE_FORMAT(TimeStart, %Y-%m-%d %H:%i:00) AS time, COUNT(*) AS num
2 FROM track 
3 WHERE Flag = 0 AND Duration >= 300
4 GROUP BY time
5 ORDER BY time;

mysql按天,小时,半小时,N分钟,分钟进行数据分组统计

原文:https://www.cnblogs.com/shenhaiweilan/p/10725042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!