mysql 日期取近七天、当前周七天 数据(补全空数据) 简单案例

2024-03-10 17:32

本文主要是介绍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 日期取近七天、当前周七天 数据(补全空数据) 简单案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/794977

相关文章

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE