mysql按时间分组,并将缺少的时间补上
创始人
2024-05-29 09:26:49
0

首先按时时间分组的常规方法是

select count(1) count,DATE_FORMAT(create_time,'%Y-%m') month from sys_course where school_id=0 group by month

执行结果
在这里插入图片描述
返回的结果,在时间上不是连续的,如果是在绘图制表业务中,不连续的日期肯定是不行的
下面先展示下改进后的sql

select
IFNULL(data.count,0),month_list.months
from
(select count(1) count,DATE_FORMAT(create_time,'%Y-%m') months from sys_user where school_id=0 GROUP BY months) data
right join 
(SELECT DATE_FORMAT(@date := DATE_ADD(@date, interval -1 month),'%Y-%m') months from 
(SELECT @date := DATE_ADD(CURDATE(), interval -1 month) from sys_user)months limit 6) month_liston data.months=month_list.months

执行结果
在这里插入图片描述
先普及一个知识,在mysql里:

= 和 := 的区别:

在update和set的时候没有区别,都是赋值的作用。:= 在select里也可以作为赋值来用。

所以分析sql:左边是具体的业务数据,右边是时间列表,我这里是取的开始时间升序排列,也可以填结束时间,然后降序排列。

主要说右边时间列表部分:先说第二个@date,这里是读取实际的业务表,然后在此同时给@date变量赋值,具体的值为我写入的规则,也就是我的查询开始时间的前一天,为什么这么写呢,因为在第一个@date那里要开始往后推导日期,为了将开始时间也推导出来,所以需要将这个起始选到前一天。需要注意的是,业务表总数据量应该大于要查询的天数,以便给变量赋值时候能对应上,否则可能会出现天数不够的情况。
在这里插入图片描述
这是执行查询业务表并给变量赋值的结果,这里的条数是该业务表的条数,可以 limit 你需要的条数。此时会得到一个临时表,然后通过再一次的select 变量赋值的方法,select @date := 这个语法会对date变量赋值,比如第一个值会在dateadd函数下加一天变为,2023-01,此时@date变量也被赋予此值,在读取第二个值并赋值时,第二个值会变为2022-12,以此类推。即可得到我们想要的结果。
在这里插入图片描述
此时获取到想要的时间列表,然后跟实际的业务数据进行关联,让时间相等即可,此时可得到完整的时间对应数据关系,在实际业务数据里没有的日期则为空,我们置为0即可。

本文参考地址:https://blog.csdn.net/qq_39314099/article/details/90667087

相关内容

热门资讯

爱我就别离开我高中作文【推荐... 爱我就别离开我高中作文 篇一爱我就别离开我高中时光如同一场精彩的电影,而我们是这个故事中的主角。友情...
我要开花高一作文【通用3篇】 我要开花高一作文 篇一我要开花高一新生,我踏入了一个全新的环境,迎接着我未知的挑战。面对繁重的学业压...
何处为家-高一作文【精选3篇... 何处为家-高一作文 篇一家,对每个人来说都有着不同的定义。对于有些人来说,家是一个温馨的房子,充满了...
心手相牵高中作文(优秀3篇) 心手相牵高中作文 篇一心手相牵的力量心手相牵是一种美好的情感表达方式,它代表着一种深深的情谊和互助精...
爱国主义征文【最新6篇】 爱国主义征文 篇一伟大的祖国,伟大的中国,是我们每个中国人的骄傲和自豪。爱国主义是中华民族的传统美德...
今天中国的教育系统(精彩3篇... 今天中国的教育系统 篇一中国的教育系统在不断发展中中国的教育系统在过去几十年里取得了巨大的进步和变革...
致敬功勋英雄人物作文800字... 致敬功勋英雄人物作文800字 篇一英雄不问出处,功勋不论身世。他们用坚毅的意志、无私的奉献和勇往直前...
校庆征文【优秀6篇】 校庆征文 篇一回眸百年,砥砺前行今年是我们学校的百年校庆,回首过去的百年历程,无不让人感慨万分。在这...
采撷幸福高一优秀作文(优秀3... 采撷幸福高一优秀作文 篇一标题:幸福的定义幸福,这个词在每个人心中都有不同的定义。对于我来说,幸福不...
积累的作文高一800字议论文 关于积累的作文高一800字议论文(精选20篇)  在学习和工作的日常里,大家最不陌生的就是论文了吧,...
究竟是谁错了高中作文(精简3... 究竟是谁错了高中作文 篇一高中作文是一项重要的学习任务,对于学生的语言表达和思维能力的培养具有重要意...
我是谁高中生作文(经典3篇) 我是谁高中生作文 篇一我是谁高中生作文作为一名高中生,我时常思考着自己是谁,以及我应该成为怎样的人。...
国强则民强高三作文【通用3篇... 国强则民强高三作文 篇一:国家强大带来的机遇与挑战随着社会的发展,国家的国力愈发强大,这对于国民来说...
那一段情作文(经典3篇) 那一段情作文 篇一:《痴情的少年》那一段情作文 篇一:痴情的少年他是个痴情的少年,总是为了一段情而心...
就这样慢慢长大高中作文【实用... 就这样慢慢长大高中作文 篇一我还记得刚进入高中的那一天,当时我充满了憧憬和期待,不知道自己将会经历怎...
80后90后的我们高二作文【... 80后90后的我们高二作文 篇一追寻梦想的年代在这个快速发展的时代,我们作为80后90后的一代人,正...
学校生活高一英语范文(优秀6... 学校生活高一英语范文 篇一: My Experience in High SchoolHigh sc...
予我一轻舟【精彩3篇】 予我一轻舟 篇一江南水乡,湖光山色,美不胜收。而在这美景之中,一艘轻盈的小舟在水面上徐徐行进。这一刻...
春雨潇潇高一作文【通用3篇】 春雨潇潇高一作文 篇一春雨潇潇,轻柔如丝,给大地带来了一场轻盈的洗礼。漫天飘洒的细雨,把大地的每一寸...
我们在改变(精选3篇) 我们在改变 篇一改变是生活中的常态,无论是环境的变化,还是人们的思想观念的转变,都在不断地塑造着我们...