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 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
MySQL创建索引需要了解的
Apr 08 MySQL
MySQL kill不掉线程的原因
May 07 MySQL
一文读懂navicat for mysql基础知识
May 31 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
mysql脏页是什么
Jul 26 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
mysql 获取相邻数据项
May 11 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 MySQL
了解MySQL查询语句执行过程(5大组件)
Aug 14 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 写文本日志实现代码
2010/05/18 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
php 数组的一个悲剧?
2011/05/11 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP5函数小全(分享)
2013/06/06 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
详解vue-cli3使用
2018/08/14 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
python函数缺省值与引用学习笔记分享
2013/02/10 Python
python根据路径导入模块的方法
2014/09/30 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
python else语句在循环中的运用详解
2020/07/06 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
大学生职业生涯规划方案
2014/01/03 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
大学学习计划书范文
2014/05/02 职场文书
银行奉献演讲稿
2014/09/16 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
专家推荐信范文
2015/03/26 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
送给客户微信问候语!
2019/07/04 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
JS实现数组去重的11种方法总结
2022/04/04 Javascript