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之PXC集群搭建的方法步骤
May 25 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
MySQL中order by的使用详情
Nov 17 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
Feb 15 MySQL
MySQL事务操作的四大特性以及并发事务问题
Apr 12 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 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按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
原生js实现点击轮播切换图片
2020/02/11 Javascript
vue实例的选项总结
2020/06/09 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
理解python正则表达式
2016/01/15 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
什么是python类属性
2020/06/10 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
动漫设计与制作专业推荐信
2014/07/07 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang