当前位置:首页 > 数据库 > mysql使用count+group by 日期,无数据的日期补0方法

mysql使用count+group by 日期,无数据的日期补0方法

2022年09月16日 22:55:02数据库8

1、先用一个查询把指定日期范围的日期列表搞出来

-- t_device 为任意表,只需要数据量大于要统计的天数
SELECT
	@cdate := date_add(@cdate, INTERVAL - 1 DAY) AS statisName,
	0 AS count
FROM
	(
		SELECT
			@cdate := date_add(CURDATE(), INTERVAL + 1 DAY)
		FROM
			t_device
	) tmp
WHERE
	@cdate > date_format('2019-09-01 00:00:00', '%Y-%m-%d')

2、业务统计查询也按上述日期查询给统计日期和数量设置别名

-- t_event为要统计数据的表
SELECT
	date_format(m.CREATE_TIME, '%Y-%m-%d') AS statisName,
	count(*) AS count
FROM
	t_event AS m
WHERE
	CREATE_TIME >=  '2019-09-01 00:00:00'
GROUP BY
	date_format(m.CREATE_TIME, '%Y-%m-%d')

3、把两个查询用左连接合起,没数量的日期填0

SELECT
	t1.statisName,
	COALESCE (t2.count, 0) AS count
FROM
	(
		SELECT
			@cdate := date_add(@cdate, INTERVAL - 1 DAY) AS statisName,
			0 AS count
		FROM
			(
				SELECT
					@cdate := date_add(CURDATE(), INTERVAL + 1 DAY)
				FROM
					t_device
			) tmp
		WHERE
			@cdate > date_format('2019-09-01 00:00:00', '%Y-%m-%d')
) t1
		LEFT JOIN (
			SELECT
				date_format(m.CREATE_TIME, '%Y-%m-%d') AS statisName,
				count(*) AS count
			FROM
				t_event AS m
			WHERE
				CREATE_TIME >= '2019-09-01 00:00:00'
			GROUP BY
				date_format(m.CREATE_TIME, '%Y-%m-%d')
		) t2 ON t1.statisName = t2.statisName

缺点:统计出来的日期没有排序.

作者:liao0801_123
来源链接:https://blog.csdn.net/liao0801_123/article/details/100581018

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/42311.html

标签: group by
分享给朋友:

“mysql使用count+group by 日期,无数据的日期补0方法” 的相关文章

mysql group by 用法解析(详细) + mysql distinct 去重

这篇文章写的很好。 转自:http://blog.tianya.cn/blogger/post_read.asp?BlogID=4221189&PostID=47881614   在使用mysql时,有时需要查询出某个字段不重复的记录,虽然my...

mysql o by

mysql o by

原文:https://blog.csdn.net/u014717572/article/details/80687042 先来看下表1,表名为test: 表1 执行如下SQL语句: SELECT name FRO...

MySQL的分组查询group by

group by (1)、group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组。 (2)、group by可用于单字段分组,也可用于多个字段分组。 复制代码select * from employee; +----...

group by分组筛选

我们在MySQL做查询时,经常需要用到 group by 分组来筛选查询 相信做后端的朋友应该遇到过,有时候需要对分组的结果再进行过滤,这时候where用不了,那么该如何解决呢? 解决方法: 用 having 处理,即having后面接筛选的条件,写法的wher...

mysql group by 用法解析(详细)

group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。 某个员工信息表结构和数据如下:   i...

oracle group by执行慢,一次对group by时间导致的慢查询的优化

oracle group by执行慢,一次对group by时间导致的慢查询的优化

前言: 最近在测试环境中点击一个图表展示页面时,半天才得到后台响应的数据进行页面渲染展示,后台的响应很慢,这样极大的降低了用户的体验; 发现这个问题后马上进行了排查 ,通过排查发现是由一个查询很慢的 group by 语句导致的; 本文...

MySQL5.7.5及以上执行group by报错

MySQL5.7.5及以上执行group by报错

MySQL执行报错: [Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cerebrum_sit.s.id' wh...

优化 Group By -- MYSQL一次千万级连表查询优化(转)

优化 Group By -- MYSQL一次千万级连表查询优化(转)

概述: 交代一下背景,这算是一次项目经验吧,属于公司一个已上线平台的功能,这算是离职人员挖下的坑,随着数据越来越多,原本的SQL查询变得越来越慢,用户体验特别差,因此SQL优化任务交到了我手上。  这个SQL查询关联两个数据表,一个是攻击IP用户表主要是记录IP的...

mysql group 遍历

原创: 管长龙 译作者:Peter Zaitsev 在日常查询中,索引或其他数据查找的方法可能不是查询执行中最高昂的部分,例如:MySQL GROUP BY 可能负责查询执行时间 90% 还多。MySQL 执行 GROUP BY 时的主要复杂性是计算 GROUP...

Mysql Group by函数用法详解

Mysql Group by函数用法详解

应用场景: 现有表student如下: 需求描述: 需要查询1班的人数: 使用语句: SELECT count(*) from student where class_name ='1班'; 结果显示:...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。