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

  • mysql不同时间粒度下的分组统计
    • 按天统计
    • 按小时统计
    • 按半小时统计
    • 按N分钟统计
    • 按分钟统计

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

我们在做项目或者数据分析时,经常遇到这样的需求:统计不同时间粒度下的数据分布情况,例如,每一天中每个小时网站的访问量,某路口每半个小时通过的车辆数量等。对于此类的问题,一个sql简单的查询就能实现,故特此记录下,方便以后使用。
在MySQL中,我的表为: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 tarckWHERE Flag = 0  AND Duration >= 300 ) a
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' )
ORDER BY time;

按N分钟统计

将上面的SQL语句稍微修改下,就可以实现按任意N分钟为时间片的分组统计,如按10分钟统计,先上代码:

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 tarckWHERE 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;

DATE_FORMAT功能强大,可以根据format字符串格式化date值,参考下面链接
MySQL DATE_FORMAT() 函数

原文链接:https://blog.csdn.net/u010946448/article/details/83752984

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

  1. Mysql数据处理,按照半小时汇总数据,

    需求:将数据库中每分钟一条的数据表,从9:30取到22:00 ,以半小时为单位汇总,并输出excel. 数据表字段:id(序号).incount(计数).cdate(数据时间) 表名:m_temp 难 ...

  2. 聊聊我的高效学习法,让你快速拿下算法、MySQL…每天只花半小时

    过了十一假期,下一个小长假就是元旦了,中间这仨月还是要老老实实上班的,毕竟快到年底了,为了年终奖也要好好表现一下自己. 除了干好份内工作,为了不让后浪拍在沙滩上,我建议你闲暇的时候也要充充电,没准儿学 ...

  3. mysql当前时间加半小时_mysql怎么在当前时间增加一小时

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  4. 2020-09-10 MYSQL按时间段分组查询当天,每小时,15分钟数据分组

    查询的需求比较麻烦,根据spreader_id和返回的状态码来判断事件的回传成功率,但是还需要新增时间段的查询,比如产品要的是每15分钟内数据的回传成功率. 这样的话就需要对时间段进行分组查询,我保存 ...

  5. mysql 先删后增 更新_MySQL 高级操作——新增数据、更新数据、删除数据、查询数据...

    新增数据 多数据插入 只要写一次insert指令,但是可以插入多条记录 语法:insert into 表名 [(字段列表)] values (值列表1),(值列表2),(值列表3); 主键冲突 主键冲 ...

  6. 跟面试官侃了半小时 MySQL 事务,把原子性、一致性、持久性的实现都讲完了

    来源 | 阿丸笔记 封图| CSDN下载于视觉中国 提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID ...

  7. 跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现

    来源 | 阿丸笔记 提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID(即原子性Atomicity.一 ...

  8. mysql登陆三小时平均值图片_Mysql每小时平均值,间隔从半小时开始

    我有一个mysql数据库,其中包含5分钟箱中的数据 . 我想从半小时开始创建每小时平均数据 . 通过使用mysql内置组: select date,AVG(AE) from mytable group ...

  9. mysql按半小时分组

    mysql分组查询(按每小时) 这个很简单,只要字段是时间类型 select DATE_FORMAT( tf.curr_time ,'%H') as dataStartTime from t_fund ...

最新文章

  1. ESP8266-SDK的硬件定时器
  2. Codeforces Round #246 (Div. 2)
  3. 深度学习——行数据的分拆及如何“喂”给训练过程
  4. MemSQL 1.8 发布,号称最快的关系数据库
  5. 组合数据类型,英文词频统计
  6. 小乌龟同步主支代码_《我的世界》游戏理论:人类,有没有可能就是一串“代码”?...
  7. yii2 错误处理
  8. 十六进制编辑器--HxD和FlexHex
  9. 简约实用个人简历自我介绍PPT模板
  10. CMD窗口下强制删除文件
  11. 用计算机画画的图片,如何用画图工具画画
  12. android短信分享,android 短信分享
  13. Xcode9中,添加图片素材无法显示的问题
  14. 《Metasploit魔鬼训练营》环境搭建与前两章经历体会
  15. 路由器常见的第三方系统( OpenWRT,LEDE,PandoraBox,Gargoyle | ASUSWrt,Merlin,Padavan | DD-WRT | Tomato )
  16. 电子科大CTF安全萌新赛部分WP
  17. android显卡效果吗,安卓模拟器显卡渲染模式中DirectX和OpenGL两个有什么区别?
  18. HTML中的图片标签<img>
  19. 抽奖动画效果html,利用css实现一个抽奖动画效果
  20. 微型计算机怎么没声音,电脑没有声音是怎么回事 电脑失声怎么解决【解决方法】...

热门文章

  1. 免费Excel自动化转云端OA/ERP/CRM等办公系统数据管理软件工具
  2. 异常全家桶来咯,异常捕获,异常抛出,自定义异常
  3. PyQt模拟微信聊天页面开发
  4. 北大AI公开课第五课--深度学习处理器by寒武纪陈云霁
  5. 智能船舶概况(国内篇)
  6. 数据可视化方法:数据图表展示
  7. Django企业开发实战--by胡阳,学习记录1117
  8. 自己申请计算机软件著作权可以下载电子版原件了?
  9. java thrift异步调用_thrift异步调用 - thrift-cob_style-tnonblockingserver - ItBoth
  10. 计算机中的图表类型,高级会计师《职称计算机》图表制作:主要常用图表类型...