MySQL按日期依次统计

  • 解决方案
  • 讲解
    • 1. 准备数据
    • 2.GROUP BY 方式
    • 3. 借助中间表累加

需求: 按日期依次统计, 如果数据库没有的日期也要统计为0
实现效果 日期连续并且没有数据统计为0:

解决方案

这里借助了mysql.time_zone 表 需要查看里面有没有数据
如果没有数据请下载到本地然后执行即可:
码云地址


关键sql


SELECTdts.df,-- 1.注意这里判空if(num is null , 0, num) num
FROM(SELECT-- 2.这里开始时间需要动态传过来  DAY是按天(也可以是YEAR MONTH) date_format( date_add( '2021-07-20 00:00:00', INTERVAL + t.Time_zone_id DAY ), '%Y-%m-%d' ) AS 'df' FROMmysql.time_zone t WHERE-- 3.这里是取多少条数据t.Time_zone_id <= '10') AS dtsLEFT JOIN (-- 4.这里就是你的业务表SELECTDATE_FORMAT( t.create_time, '%Y-%m-%d' ) dfc,count( 0 ) num FROMtest t-- WHERE  可以添加筛选条件GROUP BYdfc ) AS ps ON ps.dfc = dts.df
ORDER BYdts.df

讲解

1. 准备数据

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,`type` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,`create_time` datetime NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES (1, '1', '2021-07-29 16:32:46');
INSERT INTO `test` VALUES (2, '2', '2021-07-28 16:33:04');
INSERT INTO `test` VALUES (3, '1', '2021-07-28 16:33:13');
INSERT INTO `test` VALUES (4, '2', '2021-07-27 16:33:20');
INSERT INTO `test` VALUES (5, '1', '2021-07-26 16:33:27');
INSERT INTO `test` VALUES (6, '1', '2021-07-25 16:33:35');
INSERT INTO `test` VALUES (7, '2', '2021-07-24 16:33:44');SET FOREIGN_KEY_CHECKS = 1;

2.GROUP BY 方式

SELECTDATE_FORMAT( t.create_time, '%Y-%m-%d' ) date,count( 0 ) num
FROMtest t
GROUP BYDATE_FORMAT( t.create_time, '%Y-%m-%d' )

运行结果如下图:
如果我想统计7天的就不行了

3. 借助中间表累加

如果实在看不懂
除了红框里面的需要修改一下
其他的不要修改

2021-07-20 00:00:00 需要换成你要统计的开始时间
DAY 按天统计 也可以是YEAR MONTH
'%Y-%m-%d' 日期格式
10 你要查询多少条数据
最下面的框就是根据你实际业务来了

MySQL按日期依次统计相关推荐

  1. MySql按日期进行统计(前一天、本周、某一天)[转载]

    转自:http://www.yovisun.me/mysql-date-statistics.html 在mysql数据库中,常常会遇到统计当天的内容. 例如,在user表中,日期字段为:log_ti ...

  2. MySQL按日期分组统计(按天统计,按月统计)

    按月统计(一) select date_format(create_time, '%Y-%m') mont, count(*) coun from t_content group by date_fo ...

  3. 转:mysql的日期/时间函数

    没事整理下,方便以后查阅 一.     Mysql 获得当前日期时间 Now() : 获得当前的 日期+ 时间(date + time )函数: mysql> select now(); +-- ...

  4. MySQL Date 函数,统计当天、一周、一月等的数据

    MySQL Date 函数,统计当天.一周.一月等的数据 Date 函数 DATE_ADD() DATEDIFF() MySQL 使用下列数据类型在数据库中存储日期或日期/时间值 当前日期和时间其他的 ...

  5. 记个MySql的日期函数date_sub(now(), interval 7 day)

    记个MySql的日期函数date_sub(now(), interval 7 day) 1.什么意思 意思就是查询出,当前时间,七天前的时间. 比如now() 得到当前时间是 2022-01-15 2 ...

  6. MYSQL 生成日期维度表

    这里写自定义目录标题 MYSQL 生成日期维度表 1.创建建维度表 2.生成维度数据函数 MYSQL 生成日期维度表 在报表统计中经常要用到日期维度进行汇总,所以需要提前生成通用的日期维度表. 1.创 ...

  7. mysql的日期函数以及应用

    做项目时候碰到的,以前就碰到过,只不过没有做完整的总结,今天在此就记录一下,防止以后自己踩坑,也希望能给看到此文的童鞋一些帮助,谢谢! Mysql的日期函数 先上代码: 传过来的rank为状态 日榜, ...

  8. mysql常用日期时间函数_MySql常用日期时间函数

    返回当前的日期和时间 select MICROSECOND(SYSDATE()); --0 select SECOND(SYSDATE()); --33 select MINUTE(SYSDATE() ...

  9. PHP + mysql 对日期的操作

    今天学习了php+mysql对日期的操作分为昨天,今天,一周,一个月的记录查询,当然最后也会附上mysql操作的代码. 首先先创建一个数据库为datetime,然后创建一个日期表datetime,给表 ...

  10. MySQL数据类型--日期时间

    作者:壹叶随风 一.博客前言 自接触学习MySQL已有一段时间了,对于MySQL的基础知识还是有一定的了解的.在这一路学习过来,每次不管看书还是网上看的资料,对于MySQL数据类型中的时间日期类型总是 ...

最新文章

  1. android——记录从android studio2.3升级到android studio3.0版本遇到的坑
  2. jsp+ajax+servlet+sqlserver实现分页查询_SXT DAY063 分页
  3. JAVA中一维数组的作用,JAVA中一维数组和二维数组的定义
  4. ftp搭建后为什么登录不了??_为什么防爆胎就是普及不了?知道真相后,你也许会心凉一大截...
  5. 机器学习结构化学习模型_生产化机器学习模型
  6. 在C++中创建并使用Web服务
  7. IDEA快捷键拆解系列(三):Edit篇
  8. PyTorch 1.0 中文文档:torch.autograd
  9. Input调用流程(好文)
  10. 百度echarts极速入门
  11. python 代理抓包_python requests代理设置,fiddler抓包
  12. c语言中清屏的作用是什么,c语言中的清屏函数clrscr()应该怎么用?
  13. java使用ffmpeg进行视频处理
  14. 分苹果(C语言实现)
  15. 在MAC终端下打开Finder
  16. 一个程序员自媒体人的2017年终总结
  17. 深度学习系列(二)显卡驱动升级篇(笔记)
  18. 微信小程序 使用webview 缓存解决办法
  19. 《零基础掌握 Python 入门到实战》笔记
  20. 前一阵子闹得沸沸扬扬的IP归属地,到底是怎么实现的?

热门文章

  1. OJ 2312 Problem B Peach
  2. JAVA用OpenCV做AI图片处理
  3. 大学生必知到的外国典故
  4. 装X神器--Hacker Typer
  5. 基于局域网的超简易即时通讯软件(一)
  6. 复数Complex类
  7. freenom 申请免费域名
  8. 2D游戏引擎开发入门(二)
  9. php theexcerpt,wordpress使用the_excerpt函数显示文章的摘要信息
  10. ARM裸机篇(三)——i.MX6ULL第一个裸机程序