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在项目中怎么选事务隔离级别
May 25 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
MySQL基础快速入门知识总结(附思维导图)
Sep 25 MySQL
MySQL悲观锁与乐观锁的实现方案
Nov 02 MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
MySQL 逻辑备份 into outfile
May 15 MySQL
MySQL主从切换的超详细步骤
Jun 28 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
Mysql的Table doesn't exist问题及解决
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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
JS回调函数的应用简单实例
2014/09/17 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
vue中轮训器的使用
2019/01/27 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
python快速查找算法应用实例
2014/09/26 Python
编程语言Python的发展史
2014/09/26 Python
Python正则表达式匹配ip地址实例
2014/10/09 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
python简单实现获取当前时间
2016/08/27 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
详解python中的Turtle函数库
2018/11/19 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
网络技术专业求职信
2014/07/13 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS