SQL-按每天日期查询数据 没有数据缺失数据返回0 无需建表 若无当日数据也返回值 图表按天查询数据返回
admin
2024-02-01 12:31:33
0

文章目录

    • 1、SQL创建虚拟日期表
    • 2、业务逻辑查询需要和日期表查询的日期别名一致
    • 3、两个查询用左连接 联合查询

本博客环境背景:JAVA项目 & MYSQL数据库 ,需要能够按每日日期返回当天的数据值,若当日无数据应返回0。否则会造成当日数据缺失,值对应不上等问题。

看了很多实现方案都是直接在数据库里再建立一张时间表,存放日期数据,然后再联合查询。当时觉得再建一张表然后去改之前的所有内容有点太繁琐了,,然后发现可以创建时间虚拟表,直接改SQL联合查询即可,但其实最后发现也还是挺繁琐的。。大家选其一实现即可。

1、SQL创建虚拟日期表

直接使用如下语句可以创建一张虚拟日期表,可以按照从你需要的业务表(table1)中从取

SELECT@cdate: = date_add(@cdate, interval - 1 day) as date_str
FROM(SELECT @cdate: = date_add(CURDATE(), interval + 1 day) from table1) t1

2、业务逻辑查询需要和日期表查询的日期别名一致

create_date是逻辑按创建日期来查询,使用DATE_FORMAT()可以将“yyyy-MM-dd HH:mm:ss” 格式时间转成所需的“yyyy-MM-dd”日期格式。
日期只是示例查询样式,实际可以换成所需的startTime与endTime。

SELECT DATE_FORMAT(a.create_date, '%Y-%m-%d') as date_str, count(*) as date_count FROM table1 as a WHERE a.create_date>="2022-05-10 00:00:00" and a.create_date<"2022-09-13 23:59:00" GROUP BY DATE_FORMAT(a.create_date, '%Y-%m-%d')

3、两个查询用左连接 联合查询

需要使用左连接将逻辑查询与虚拟日期表联合起来查询。date_str是日期字段,date_count是所需要的统计数据字段
日期只是示例查询样式,实际可以换成所需的startTime与endTime;同时需要限制返回日期范围在最外面加上了同样的查询时间限制,实际如有需要最外层where这块也应要用DATE_FORMAT()适配转换一下
最后ORDER BY date_str , ASC默认升序,DESC默认降序

SELECT t1.date_str, COALESCE(t2.date_count, 0) as date_count
FROM(SELECT @cdate:=date_add(@cdate, interval - 1 day) as date_str FROM(SELECT @cdate:=date_add(CURDATE(), interval + 1 day) from task) tmp1
) t1
LEFT JOIN(SELECT DATE_FORMAT(a.create_date, '%Y-%m-%d') as date_str, count(*) as date_count FROM table1 as a WHERE a.create_date>="2022-05-10 00:00:00" and a.create_date<"2022-09-13 23:59:00" GROUP BY DATE_FORMAT(a.create_date, '%Y-%m-%d') 
) t2
on t1.date_str = t2.date_str
WHERE t1.date_str>="2022-05-10" AND t1.date_str<="2022-09-13"
ORDER BY t1.date_str ASC

利用日历表实现方式:https://blog.csdn.net/smilecall/article/details/78319242
直接创建日历表的方式搜到很多但未实际尝试过,也给出一个看起来比较合适的地址

参考:https://www.ancii.com/ankwpdeau/

相关内容

热门资讯

原创 中... 编辑:[太阳] 4月30日,美国先出现了一幕很耐人寻味的场景。路透社披露,北京在本月推出一套新的贸易...
️金价下跌+典当整治!5个典当... 近期金价持续下行,加上国家对典当行业的整治力度加大,一批无资质的“伪典当行”被清退,但仍有不少人急着...
美国上市公司迎重大变革:SEC... 5月6日消息,美国证券交易委员会(SEC)发布一项提议,取消美国上市公司强制进行的季度报告制度,允许...
激战大疆9个月,进击的影石在2... 守旧城、筑新墙,2026年是影石的“转折点”。 作者 | 刘亮 编辑 | 趣解商业TMT组 过去9个...
沙漠里的算力革命_中国首个算电... 2026年,一座光伏电站的投运,让一片黄沙有了新的意义。中国大唐中卫云基地50万千瓦光伏电站正式并网...
刘军连:白癜风患者,避免过量摄... 辛辣刺激性食物如辣椒、花椒、生蒜、芥末等,虽能提升食欲,但过量摄入会对白癜风患者的病情造成不利影响。...
4月27日-5月3日A股IPO... 中国上市公司网/文 4月27日-5月3日期间IPO动态各个阶段速览: 一、IPO排队企业情况(289...
A股,五月开门红!除了满屏涨停... 每经记者|肖芮冬 每经编辑|赵云 5月6日,市场震荡反弹,科创50指数一度涨超9%,逼近历史高位。...
原创 油... 国内车主迎来重大利好!近期国际油价持续疯狂跳水,5 月 5 日,WTI 原油期货暴跌 4%,报 10...
原创 低... 王叔还记得,十年前他在银行存了一张三年期定期存单,利率4.25%。每年利息4250元,足够给孙辈包个...
京东方CEO冯强:以SID为平... 5月6日,有着显示界“奥斯卡”之称的SID 2026(国际显示周)展会在美国开幕,作为全球显示产业的...
西安企业管理公司实力排名推荐(... 西安企业管理公司实力排名推荐(2026年) 在陕西企业数字化转型加速的背景下,薪酬绩效咨询成为企业管...
科麦特科由董事长虞家桢夫妇控制... 瑞财经 吴文婷近日,江苏科麦特科技发展股份有限公司(以下简称“科麦特科”)披露北交所IPO辅导工作完...
量质齐升!五一叠加广交会,广州... 五一假期,广州紧抓消费黄金期,叠加第139届广交会第三期展会,“政策+活动”双轮驱动,消费市场供需两...
金观平:聚焦需求找准服务业增长... 作为经济发展的“主引擎”,服务业在国民经济中的地位日益凸显,迎来快速发展期。一季度,我国服务业增加值...
追觅俞浩直言小米两大短板:过度... 俞浩是真的不把网友当外人,最近他在社交平台疯狂发布短视频,输出自己的各种观点。 比如,今日俞浩发布视...
OpenAI高层财务关系曝光:... OpenAI联合创始人兼总裁格雷格·布罗克曼(Greg Brockman)在法庭上披露了他与首席执行...
IPO动态丨本周美股预告:Od... 回顾:上周17只新股上市,其中12只为SPAC,如下: Pershing Square(PS)以每股...