MySQL按日期依次统计
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按日期依次统计相关推荐
- MySql按日期进行统计(前一天、本周、某一天)[转载]
转自:http://www.yovisun.me/mysql-date-statistics.html 在mysql数据库中,常常会遇到统计当天的内容. 例如,在user表中,日期字段为:log_ti ...
- MySQL按日期分组统计(按天统计,按月统计)
按月统计(一) select date_format(create_time, '%Y-%m') mont, count(*) coun from t_content group by date_fo ...
- 转:mysql的日期/时间函数
没事整理下,方便以后查阅 一. Mysql 获得当前日期时间 Now() : 获得当前的 日期+ 时间(date + time )函数: mysql> select now(); +-- ...
- MySQL Date 函数,统计当天、一周、一月等的数据
MySQL Date 函数,统计当天.一周.一月等的数据 Date 函数 DATE_ADD() DATEDIFF() MySQL 使用下列数据类型在数据库中存储日期或日期/时间值 当前日期和时间其他的 ...
- 记个MySql的日期函数date_sub(now(), interval 7 day)
记个MySql的日期函数date_sub(now(), interval 7 day) 1.什么意思 意思就是查询出,当前时间,七天前的时间. 比如now() 得到当前时间是 2022-01-15 2 ...
- MYSQL 生成日期维度表
这里写自定义目录标题 MYSQL 生成日期维度表 1.创建建维度表 2.生成维度数据函数 MYSQL 生成日期维度表 在报表统计中经常要用到日期维度进行汇总,所以需要提前生成通用的日期维度表. 1.创 ...
- mysql的日期函数以及应用
做项目时候碰到的,以前就碰到过,只不过没有做完整的总结,今天在此就记录一下,防止以后自己踩坑,也希望能给看到此文的童鞋一些帮助,谢谢! Mysql的日期函数 先上代码: 传过来的rank为状态 日榜, ...
- mysql常用日期时间函数_MySql常用日期时间函数
返回当前的日期和时间 select MICROSECOND(SYSDATE()); --0 select SECOND(SYSDATE()); --33 select MINUTE(SYSDATE() ...
- PHP + mysql 对日期的操作
今天学习了php+mysql对日期的操作分为昨天,今天,一周,一个月的记录查询,当然最后也会附上mysql操作的代码. 首先先创建一个数据库为datetime,然后创建一个日期表datetime,给表 ...
- MySQL数据类型--日期时间
作者:壹叶随风 一.博客前言 自接触学习MySQL已有一段时间了,对于MySQL的基础知识还是有一定的了解的.在这一路学习过来,每次不管看书还是网上看的资料,对于MySQL数据类型中的时间日期类型总是 ...
最新文章
- android——记录从android studio2.3升级到android studio3.0版本遇到的坑
- jsp+ajax+servlet+sqlserver实现分页查询_SXT DAY063 分页
- JAVA中一维数组的作用,JAVA中一维数组和二维数组的定义
- ftp搭建后为什么登录不了??_为什么防爆胎就是普及不了?知道真相后,你也许会心凉一大截...
- 机器学习结构化学习模型_生产化机器学习模型
- 在C++中创建并使用Web服务
- IDEA快捷键拆解系列(三):Edit篇
- PyTorch 1.0 中文文档:torch.autograd
- Input调用流程(好文)
- 百度echarts极速入门
- python 代理抓包_python requests代理设置,fiddler抓包
- c语言中清屏的作用是什么,c语言中的清屏函数clrscr()应该怎么用?
- java使用ffmpeg进行视频处理
- 分苹果(C语言实现)
- 在MAC终端下打开Finder
- 一个程序员自媒体人的2017年终总结
- 深度学习系列(二)显卡驱动升级篇(笔记)
- 微信小程序 使用webview 缓存解决办法
- 《零基础掌握 Python 入门到实战》笔记
- 前一阵子闹得沸沸扬扬的IP归属地,到底是怎么实现的?