mysql 30天自动补0

java 复制代码
SELECT DATA.DAY,
  IFNULL(DATA.count, 0) AS cnt,
  day_list.DAY AS DATE
FROM
(
    SELECT
      @DATE := DATE_ADD(@DATE, INTERVAL - 1 DAY) DAY
    FROM
      (SELECT @DATE := DATE_ADD(CURDATE(), INTERVAL 1 DAY) FROM student) days
      LIMIT 30
  ) day_list 
  
  LEFT JOIN (SELECT DATE_FORMAT(birth_day, '%Y-%m-%d') DAY, count(id) count FROM student GROUP BY DAY) DATA 
  
  ON day_list.DAY = DATA.DAY

结果

这部分是从student表中,取出30条数据,并将日期+1赋值给@DATE变量

java 复制代码
(SELECT @DATE := DATE_ADD(CURDATE(), INTERVAL 1 DAY) FROM student) days
      LIMIT 30

这部分是将@DATE日期-1,并赋值给@DATE,下一次继续-1,赋值给@DATE,直到计算 出30天日期

java 复制代码
SELECT
      @DATE := DATE_ADD(@DATE, INTERVAL - 1 DAY) DAY

这部分是统计同一天出生的学生

java 复制代码
SELECT DATE_FORMAT(birth_day, '%Y-%m-%d') DAY, count(id) count FROM student GROUP BY DAY

所以整个整体就能将30天内同一天出生的学生人数统计出来

这个方案有个缺点,要求student表要超过30条,否则计算出的数据会缺少

相关推荐
TDengine (老段)5 分钟前
TDengine TSDB 3.4.0.0 上线:虚拟表、流计算性能显著提升,安全能力全面进阶
大数据·数据库·物联网·安全·时序数据库·tdengine·涛思数据
Leo.yuan6 分钟前
制造业常用BOM详解:单层BOM、多层BOM、工艺BOM、虚拟BOM
大数据·数据库·信息可视化·bom
筷乐老六喝旺仔15 分钟前
使用Python进行PDF文件的处理与操作
jvm·数据库·python
知识分享小能手17 分钟前
SQL Server 2019入门学习教程,从入门到精通,初识 SQL Server 2019 —— 语法知识点与使用方法详解(1)
数据库·学习·sqlserver
清风~徐~来26 分钟前
【视频点播系统】Etcd-SDK 介绍及使用
数据库·etcd
计算机毕设VX:Fegn089527 分钟前
计算机毕业设计|基于springboot + vue球鞋购物系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
仍然.30 分钟前
MYSQL--- 表的设计
数据库·mysql
数据知道42 分钟前
PostgreSQL的连接方式有哪些?有哪些连接工具?
数据库·postgresql
WJX_KOI43 分钟前
保姆级教程:Apache Seatunnel CDC(standalone 模式)部署 MySQL CDC、PostgreSQL CDC 及使用方法
java·大数据·mysql·postgresql·big data·etl
柚子科技43 分钟前
毕业设计不用愁:一个免费的 SQL 转 ER 图在线工具,真香!
数据库·sql·毕业设计·课程设计·毕设