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

 更新时间:2024年04月24日 10:24:21   作者:爱码猿  
我们在做项目或者数据分析时,经常遇到这样的需求:统计不同时间粒度下的数据分布情况,例如,每一天中每个小时网站的访问量,某路口每半个小时通过的车辆数量等,下面给大家分享mysql按天/小时/半小时/N分钟/分钟进行数据分组统计功能,感兴趣的朋友跟随小编一起看看吧

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

我们在做项目或者数据分析时,经常遇到这样的需求:统计不同时间粒度下的数据分布情况,例如,每一天中每个小时网站的访问量,某路口每半个小时通过的车辆数量等。对于此类的问题,一个sql简单的查询就能实现,故特此记录下,方便以后使用。
在MySQL中,我的表为:track 数据结构如下所示:

表track的数据结构示意

按天统计

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

按小时统计

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

一小时结果

按半小时统计

SELECT time, COUNT( * ) AS num 
FROM
	(
	SELECT Duration,
		DATE_FORMAT(
			concat( date( TimeStart ), ' ', HOUR ( TimeStart ), ':', floor( MINUTE ( TimeStart ) / 30 ) * 30 ),
			'%Y-%m-%d %H:%i' 
		) AS time 
	FROM tarck
	WHERE Flag = 0  AND Duration >= 300 
	) a 
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' ) 
ORDER BY time;

半小时查询结果

按N分钟统计

SELECT time, COUNT( * ) AS num 
FROM
	(
	SELECT Duration,
		DATE_FORMAT(
			concat( date( TimeStart ), ' ', HOUR ( TimeStart ), ':', floor( MINUTE ( TimeStart ) / 10 ) * 10 ),
			'%Y-%m-%d %H:%i' 
		) AS time 
	FROM tarck
	WHERE Flag = 0  AND Duration >= 300 
	) a 
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' ) 
ORDER BY time;

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

按分钟统计

将按小时统计的SQL语句稍微修改下,就可以实现按分钟统计

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

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

到此这篇关于mysql按天/小时/半小时/N分钟/分钟进行数据分组统计的文章就介绍到这了,更多相关mysql数据分组统计内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL慢查询以及重构查询的方式记录

    MySQL慢查询以及重构查询的方式记录

    MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句,这篇文章主要给大家介绍了关于MySQL慢查询以及重构查询的相关资料,需要的朋友可以参考下
    2021-06-06
  • mysql优化配置参数

    mysql优化配置参数

    mysql安装好需要优化配置一下,打开c:\windows\my.ini文件
    2011-03-03
  • Mysql逻辑架构详解

    Mysql逻辑架构详解

    今天小编就为大家分享一篇关于Mysql逻辑架构详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • mysql关于排序底层原理解析

    mysql关于排序底层原理解析

    这篇文章主要介绍了mysql关于排序底层原理解析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • mysql中insert并发问题(on DUPLICATE KEY UPDATE)

    mysql中insert并发问题(on DUPLICATE KEY UPDATE)

    本文主要介绍了mysql中insert并发问题(on DUPLICATE KEY UPDATE),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 快速在Windows上安装MySQL5.7压缩包

    快速在Windows上安装MySQL5.7压缩包

    这篇文章主要介绍了快速在Windows上安装MySQL5.7压缩包的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • 为什么在MySQL中不建议使用UTF-8

    为什么在MySQL中不建议使用UTF-8

    在本篇文章里小编给大家分享了一篇关于MySQL中不要使用UTF-8的相关文章,有兴趣的朋友们可以阅读参考下。
    2020-12-12
  • MySQL中按时间获取慢日志信息的方法

    MySQL中按时间获取慢日志信息的方法

    这篇文章主要介绍了MySQL中按时间获取慢日志信息的方法,使用到了cutlogbytime这个工具,主要操作是设置时间戳,需要的朋友可以参考下
    2015-05-05
  • 一步到位讲解ubuntu安装MySql

    一步到位讲解ubuntu安装MySql

    Ubuntu是一个使用非常广泛的Linux发行版,Ubuntu Server则是云上最流行的服务器操作系统,下面这篇文章主要给大家介绍了关于ubuntu安装MySql的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Linux下安装MySQL5.7.19问题小结

    Linux下安装MySQL5.7.19问题小结

    第一次在自己虚机上安装mysql 中间碰到很多问题 在这里记下来,特此分享到脚本之家平台供大家参考
    2017-08-08

最新评论