MySql按时,天,周,月进行数据统计


Posted in MySQL onAugust 14, 2022

前言

最近遇到一个统计的需求场景,针对db中的数据,看一下每天的数据量情况,由于DB中时间字段采用的是int存的时间戳,所以最开始想到的是直接对时间进行按天取整,然后再Group统计数据;

除此之外,使用DATE_FORMAT函数来处理可能是更简洁的方法了,下面分别介绍下两种方式

1. 时间取整方式

假设现在有一个user表,其中create_time 为 int类型的时间戳,此时我们需要统计每天的新增用户数,第一种方式就是将create_time转换为天为单位的整数,然后group分组之后计数即可

对应的sql如下;

select floor(create_time / 86400) as c, count(*) from `user` group by c

使用上面这种方式虽然可以统计出结果,但是显示并不友好,如上面这个c实际上是距离标准起始时间过去的天数;无法直观看到每天的数量情况

2. data_format方式

接下来再介绍一下根据日期格式化这个函数来实现数据统计

函数说明

这个函数通常接收两个参数,使用姿势形如

DATE_FORMAT(date,format)
  • date: 日期
  • format: 规定日期/时间的输出格式

注意上面的date,要求是日期格式,可我们现在的数据是int类型,怎么整?

先通过from_unixtime函数来转换为日期,然后再使用data_format来格式化分组,这样就可行了

比如按天统计的sql可以如下:

select date_format(from_unixtime(create_time), '%Y-%m-%d') today, count(*) as cnt from user group by today

返回结果形如:

today cnt
2022-07-02 6
2022-07-03 4
2022-07-04 4
2022-07-05 3
2022-07-06 2
2022-07-07 1

如果需要按周统计,也很方便,将format改成 %Y-%u

select date_format(from_unixtime(create_time), '%Y-%u') today, count(*) as cnt from user group by today

返回结果形如:

today cnt
2022-22 27
2022-23 52
2022-24 28
2022-25 33
2022-26 39
2022-27 10

同样按年统计,则将format改成%Y即可

下面给出format对应的取值说明:

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

到此这篇关于MySql按时,天,周,月进行数据统计的文章就介绍到这了,更多相关MySql数据统计内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
为什么mysql字段要使用NOT NULL
May 13 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
Mysql 一主多从的部署
May 20 MySQL
MySQL数据库安装方法与图形化管理工具介绍
May 30 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL事务的隔离级别详情
Jul 15 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 MySQL
DQL数据查询语句使用示例
Dec 24 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 #MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 #MySQL
MySQL数据库查询之多表查询总结
Aug 05 #MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 #MySQL
MySQL存储过程及语法详解
Aug 05 #MySQL
MySQL自定义函数及触发器
Aug 05 #MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 #MySQL
You might like
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jQuery的三种$()
2009/12/30 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
Vue组件开发初探
2017/02/14 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
详解python发送各类邮件的主要方法
2016/12/22 Python
Python守护线程用法实例
2017/06/23 Python
Python绘制3D图形
2018/05/03 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
MADE法国:提供原创设计师家具
2018/09/18 全球购物
庆元旦迎新年广播稿
2014/02/18 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
员工家属慰问信
2015/03/24 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
Python Matplotlib库实现画局部图
2021/11/17 Python