MySQL 按时间统计数据


mysql不同时间粒度下的分组统计

1、测试表数据如下: 

 

 

 

2、MySQL按天分组数据

     DATE() 函数返回日期或日期/时间表达式的日期部分。如下所示:

可以如下Sql展示:

SELECT DATE(time) AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

结果如下所示:

 

 

 3、按分钟分组如下所示:

  DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

注:完整的年月日时分秒格式如:%Y-%m-%d %H:%i:%s

测试输出当前时间如下:

 

 Sql语句可以如下书写:

SELECT DATE_FORMAT(time, '%Y-%m-%d %H') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

输出结果如下:

 

 因为DATE_FORMAT是格式化函数,所以也可以这样写

SELECT DATE_FORMAT(time, '%Y-%m-%d %H:00:00') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

 

 4、分别以年、月、分、秒分组

SELECT DATE_FORMAT(time, '%Y') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

月:

SELECT DATE_FORMAT(time, '%Y-%m') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

分:

SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

秒:

SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') AS date, COUNT(*) AS num
FROM group_time_test 
GROUP BY date
ORDER BY date desc ;

5、带计算类的时间统计

 需要用到下列方法,依次为年、月、日、时、分、秒、星期

select year(NOW());
select MONTH(NOW());
select DAY(NOW());
select HOUR(NOW());
select MINUTE(NOW());
select SECOND(NOW());
select WEEK(NOW());

5.1 按半小时分组统计

Sql与结果如下:

SELECT DATE_FORMAT(
            concat( date( time ), ' ', HOUR ( time ), ':', floor( MINUTE ( time ) / 30 ) * 30 ),
            '%Y-%m-%d %H:%i' 
        ) AS date ,count(*) 
FROM group_time_test  GROUP BY date ;

 

 其他不一一举例

 

 

 

 

 

 

 

 

 

 

 

 

 

参考资料:https://blog.csdn.net/u010946448/article/details/83752984


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM