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多表查询-笔记七
Apr 05 MySQL
MySql存储过程之逻辑判断和条件控制
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
mysql创建存储过程及函数详解
Dec 04 MySQL
MySQL限制查询和数据排序介绍
Mar 25 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
讲解MySQL增删改操作
May 06 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
php获取后台Job管理的实现代码
2011/06/10 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
即将毕业大学生自荐信
2014/01/24 职场文书
创文明城市标语
2014/06/16 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
学生保证书
2015/01/16 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
致运动员赞词
2015/07/22 职场文书
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python