当前位置: 首页 > article >正文

MySQL根据日期统计时没有数据的日期也需要返回0

我们经常会碰需要根据日期统计数据的问题,正常情况 GROUP BY 日期就可以得到我们想要的数据,但是有些时候某些日期没有数据可是我们又想它能返回一个0,这个时候 GROUP BY 就不行了

先看 GROUP BY 查询

SELECT count_date,
	   SUM(IFNULL(total_amount, 0)) AS total_amount,
       SUM(IFNULL(commission_amount, 0)) AS commission_amount
FROM qy_commission_count
WHERE agent_id = 4
AND count_date BETWEEN '2024-09-01' AND '2024-09-11'
GROUP BY count_date;

在这里插入图片描述

现在我们希望在没有数据的日期也返回该日期和对应的 0 值,这里可以通过创建一个日期序列来实现

WITH RECURSIVE date_range AS (
    SELECT '2024-09-01' AS count_date
    UNION ALL
    SELECT DATE_ADD(count_date, INTERVAL 1 DAY)
    FROM date_range
    WHERE count_date < '2024-09-11'
)
SELECT dr.count_date,
       SUM(IFNULL(qcc.total_amount, 0)) AS total_amount,
       SUM(IFNULL(qcc.commission_amount, 0)) AS commission_amount
FROM date_range dr
LEFT JOIN qy_commission_count qcc 
       ON dr.count_date = qcc.count_date
       AND qcc.agent_id = 4
GROUP BY dr.count_date
ORDER BY dr.count_date;

在这里插入图片描述

从上面的结果可以看出除了有数据的日期,没有数据的日期也会返回一个0.00,这里要注意 WITH RECURSIVE 是 MySQL8.0 才有的


http://www.kler.cn/a/301782.html

相关文章:

  • ONLYOFFICE8.2版本测评,团队协作的办公软件
  • Android CALL按键同步切换通话界面上免提和听筒的图标显示
  • MacOS下,如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能
  • 创建vue+electron项目流程
  • [产品管理-82]:《产品经理从入门到精通》产品经理的基本思维与核心思想
  • Opengl光照测试
  • 图计算:基于SparkGrpahX计算聚类系数
  • 在Linux系统中“普通场景”下隐匿操作痕迹
  • 算法学习攻略总结 : 入门至进阶,通关之路指南
  • jmeter依赖jar包找不到类路径
  • CTF(misc)
  • 微调语言模型前,需要考虑这三个关键方面
  • pwn题目搭建过程中glibc出现问题的解决方案
  • 计算机视觉学习路线
  • 获取STM32 MCU的唯一ID
  • vue国际化
  • Job定时自动执行SQL日志记录脚本
  • OCC开发_变高箱梁全桥建模
  • Mysql梳理3——基本的SELECT语句
  • 【Linux】Linux常见指令以及权限理解(下)
  • 【PyTorch单点知识】像素洗牌层:torch.nn.PixelShuffle在超分辨率中的作用说明
  • centos模式切换
  • 【系统架构设计师】原型模式详解
  • Vue2 和 Vue3 有什么区别?
  • Windows系统安装R语言及RStudio、RTools
  • Vue3+TS项目给el-button统一封装一个点击后转圈效果的钩子函数按钮防抖