mysql 日期取近七天、当前周七天 数据(补全空数据) 简单案例
首先我们新建一张测试表格,date_day为日期,score为成绩,表格名ceshi。
我们如果取近七天的每天总成绩数据,常用的sql应该是:
SELECT date_day,sum(score) as score FROM ceshi WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(date_day) GROUP BY date_day ORDER BY date_day
执行结果为:
这样虽然得出了结果,但是如果数据库里没有完整的7天数据,那么他只能得到已有的三天数据。
所以我们需要改一下sql,关联一张自己创建的7天日期临时表:
select d.date, IFNULL(T.score,0) socre from
(SELECT CURDATE() AS dateUNION ALLSELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS dateUNION ALLSELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS dateUNION ALLSELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS dateUNION ALLSELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS dateUNION ALLSELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS dateUNION ALLSELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS date
) d
left join(select date_day, sum(score) as scorefrom ceshigroup by DATE_FORMAT(date_day,'%Y-%m-%d')
) T on T.date_day = d.date
GROUP BY d.date
执行结果为 :
同理 如果我们想要得到本周7天的数据,那么只需要改下日期临时表格,
select d.date, IFNULL(T.score,0) socre from
(select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 0 DAY) as date
UNION ALL
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 1 DAY) as date
UNION ALL
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 2 DAY) as date
UNION ALL
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 3 DAY) as date
UNION ALL
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 4 DAY) as date
UNION ALL
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY) as date
UNION ALL
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 6 DAY) as date
) d
left join(select date_day, sum(score) as scorefrom ceshigroup by DATE_FORMAT(date_day,'%Y-%m-%d')
) T on T.date_day = d.date
GROUP BY d.date
执行结果为:
mysql 日期取近七天、当前周七天 数据(补全空数据) 简单案例相关推荐
- 抓取近千分领英资料后,我们发现了数据科学家的秘密……
全文共4090字,预计学习时长8分钟 获取数据,以洞悉自己想成为的样子 图片来源:David S.A/Pixabay 一个数据科学家是不是非得成为一个Kaggler大师?神经网络究竟该用于图像识别还是 ...
- MYSQL查询一年中12个月的数据,补全12个月.
1.建立12个月的视图 CREATE VIEW 12_month_view AS SELECT 01 AS month UNION SELECT 02 AS month UNION SELECT 03 ...
- mysql 季度最后一天,MYSQL中取目前年份的第一天和当前周,月,季度的第一天/最后一天...
MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天 mysql 获取当年第一天的年月日格式:SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(n ...
- mysql日期减后取月_mysql加减时间-函数-时间加减
select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT substring( timediff('23:40:00', ' 18:30:00 ...
- mysql 日期类型的取值范围
文章目录 前言 一.YEAR 二.DATE 三.TIME 四.YEAR 五.TIMESTAMP 前言 MySQL 日期和时间取值范围,避免在从其他数据库转向MYSQL数据库踩坑 提示:以下是本篇文章正 ...
- mysql日期减后取月_MySql日期相减返回月数_MySQL
bitsCN.com MySql日期相减返回月数 1.PERIOD_DIFF(P1,P2) 返回在时期P1和P2之间月数(P1和P2的格式YYMM或YYYYMM) 例:SELECT PERIOD_DI ...
- mysql日期函数之DATEDIFF() if()用法 case when用法
mysql日期函数之DATEDIFF() if()用法 case when用法 背景: 用户密码七天后会过期,用户修改密码时会同步添加修改时间进数据库, 登录时校验用户是否需要修改密码, 一开始想的时 ...
- mysql数据库取奇数行数据_查询数据库中的奇数行和偶数行
功能奇数次执行和偶数次执行时的结果不同的故障复盘 场景:将数据库查询到的数据,写入一个xls文件.完成后,多点几次,发现一个问题,偶数次生成的文件比较小,打开一看,里面只有一行,只有标题,没有内容.分 ...
- 讨论常用的 MySQL 日期函数。
讨论常用的 MySQL 日期函数. 日期函数和运算符用于日期和时间类型的数据进行操作并返回一个结果.以下是 MySQL 中常见的日期函数和运算符: ADDDATE().DATE_ADD(),为日期时间 ...
最新文章
- [.Net跨平台]部署DTCMS到Jexus遇到的问题及解决思路---Linux环境搭建
- php中perl配置,配置Apache及运行perl,php
- 原型模式Prototype,constructor,__proto__详解
- 【行业趋势】国内这10个AI研究院,你想好去哪个了吗?
- cdh 安装_CDH的介绍和部署
- 如何理解c语言的变量,C语言中变量的理解.PDF
- memset()函数的赋值问题
- 企业安全建设之自动化代码扫描(代码审计)
- 三维视觉前沿进展年度报告
- FTT字体绘制,2D阶段
- java calendar 2月份_Java Calendar类使用总结
- python+nodejs+Vue体检信息管理系统项目源码
- 关键点提取:单目3D检测的点睛之笔
- Java实现腾讯云发送短信
- 数据分析师与数据科学家的区别
- 两融杠杆渐入警戒区 专家警示结构性风险
- 三角公式(三角函数)
- 从购买服务器到搭建WordPress博客详细教程
- Win11开始菜单关机键不见了怎么办?
- 用计算机高新证成都入户,关于2021年成都高新区小升初“报名电脑随机录取”的公告发布!...