当前位置: 首页 > news >正文

mysql按照日期分组统计数据

目录

    • 前言
    • 按天统计
    • 按周统计
    • 按月统计
    • 按年统计
    • date_format参数

前言

mysql的date_format函数想必大家都使用过吧,一般用于日期时间转化

# 例如
select DATE_FORMAT('2023-01-01 08:30:50','%Y-%m-%d %H:%i:%s')
# 可以得出 2023-01-01 08:30:50# 或者是
select DATE_FORMAT('2023-01-01 08:30:50','%Y-%m-%d')
# 可以得出 

不过很多时间不仅仅仅限于这些最基础的使用,当我们需要对于时间的数据有更高的要求时,就需要对这个函数有更多的了解了,例如按一定的时间段分组统计这段时间的数据,本期我们主要讲这个分组统计的操作,下面直接进入正题

按天统计

按天统计是一个比较基础的统计方式,大部分人也应该能直接写出来

select date_format(o.bill_date,'%Y-%m-%d') evertday,COUNT(*) orderNumFROM table oGROUP BY evertdayORDER BY evertday DESC

在这里插入图片描述

按周统计

按周统计就比较麻烦一点了,我这边提供了两种思路:

第一种:

SELECTsubdate(date_format(o.bill_date,'%Y-%m-%d'),date_format(o.bill_date,'%w')) weekend,COUNT(*) orderNumFROM test oGROUP BY weekendORDER BY weekend DESCLIMIT 9

在这里插入图片描述
这边可以看出日期已经按照周进行排序分组了,7月30到8月5号的数据都已经统计到了7月30这个weekend中
我们简单剖析一下:
首先date_format(o.bill_date,'%Y-%m-%d')大家都很清楚会把日期变成yyyy-MM-dd形式
在这里插入图片描述
date_format(o.bill_date,'%w')会统计这天是这周的礼拜几,这个参数我在最后整理了一张表格可供大家查看使用
那么8月2号正好是礼拜三,再通过subdate函数去减一下这个日期就可以统计出来一个对应的时间了,或者也有朋友喜欢用DATE_SUB函数都是一样的效果,这样就统计出来了上周末的时间,也就是上周末到这周末是一个轮回
在这里插入图片描述

第二种:

-- 2、
select -- 	weekday(bill_date) as weekday,date_format(date_add(bill_date, interval - (weekday(bill_date) +1) day),'%Y-%m-%d') as monday,count(1)
from t 
group by monday
order by monday desc

总体的思路都差不多,计算出了上周日的时间点进行group by
在这里插入图片描述

按月统计

按月统计的话就是另外一种思路了,因为按周的统计的话还存在日的概念,而按月统计的话就可以省略掉日期了

selectDATE_FORMAT( bill_date, '%Y-%m' ) months,count(1) count 
fromt
group by months
order by months desc

在这里插入图片描述

按年统计

这个跟按月统计一个道理,只统计年份就可以了

selectDATE_FORMAT( bill_date, '%Y' ) months,count(1 ) count 
fromt
group by months
order by months desc

在这里插入图片描述

date_format参数

格式描述
%M月名字(January……December)
%W星期名字(Sunday……Saturday)
%D有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y年, 数字, 4 位
%y年, 数字, 2 位
%a缩写的星期名字(Sun……Sat)
%d月份中的天数, 数字(00……31)
%e月份中的天数, 数字(0……31)
%m月, 数字(01……12)
%c月, 数字(1……12)
%b缩写的月份名字(Jan……Dec)
%j一年中的天数(001……366)
%H小时(00……23)
%k小时(0……23)
%h小时(01……12)
%I小时(01……12)
%l小时(1……12)
%i分钟, 数字(00……59)
%r时间,12 小时(hh:mm:ss [AP]M)
%T时间,24 小时(hh:mm:ss)
%S秒(00……59)
%s秒(00……59)
%pAM或PM
%w一个星期中的天数(0=Sunday ……6=Saturday )
%U星期(0……52), 这里星期天是星期的第一天
%u星期(0……52), 这里星期一是星期的第一天
%%一个文字“%”
http://www.lryc.cn/news/108764.html

相关文章:

  • 19 | 分类模型评估指标
  • 【Pycharm2022.2.1】python编辑器最新版安装教程(包含2017-2022的所有版本win/mac/linux)
  • 深度学习-相关概念
  • 眼科医生推荐的台灯 护眼台灯买什么好?
  • 如何使用 ChatGPT 为 Midjourney 或 DALL-E 等 AI 图片生成提示词
  • 【Linux后端服务器开发】Reactor模式实现网络计算器
  • 【WebRTC---源码篇】(二:一)PeerConnection详解
  • 使用tinyxml解析和修改XML文件
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(1)]
  • 【自动化运维】编写LNMP分布式剧本
  • 用Rust实现23种设计模式之单例
  • 小米平板6将推14英寸版!与MIX Fold 3同步推出
  • webpack 的一点知识
  • Python 双目摄像机控制(windows + linux)
  • mybatisplus实现自动填充 时间
  • P5732 【深基5.习7】杨辉三角
  • ubuntu调整路由顺序
  • 集成学习算法是什么?如何理解集成学习?
  • npm配置最新淘宝镜像
  • 网络基础1
  • 2023年电赛---运动目标控制与自动追踪系统(E题)发挥题思路
  • 61 # http 数据处理
  • 模版下载和Excel文件导入
  • Datax 数据同步-使用总结(一)
  • 代码随想录算法训练营第九天| 232.用栈实现队列,225.用队列实现栈
  • 求解二次方程
  • 【hive 运维】hive注释/数据支持中文
  • 架构,性能和游戏 《游戏编程模式》学习笔记
  • Spring Bean的生命周期
  • 基于量子同态的安全多方量子求和加密