首页 > 数据库 > mysql教程 > 如何用零计数填充 SQL 查询结果中的缺失日期?

如何用零计数填充 SQL 查询结果中的缺失日期?

DDD
发布: 2024-12-12 21:51:15
原创
314 人浏览过

How to Fill Missing Dates in SQL Query Results with Zero Counts?

在 SQL 结果中填充空日期

查询 MySQL 以从表中导出日期和计数时,日期范围中的间隙可能会留下一些空白下落不明的日子。要使用零计数条目填补这些空白,一种简单的方法是利用服务器端存储过程。

使用存储过程的服务器端填充

以下存储过程创建一个临时表,其中包含指定范围内的所有可能日期。然后,该表与查询结果左连接,以填充缺失的日期。

create procedure sp1(d1 date, d2 date)
  declare d datetime;

  create temporary table foo (d date not null);

  set d = d1
  while d <= d2 do
    insert into foo (d) values (d)
    set d = date_add(d, interval 1 day)
  end while

  select foo.d, count(date)
  from foo left join table on foo.d = table.date
  group by foo.d order by foo.d asc;

  drop temporary table foo;
end procedure
登录后复制

此过程采用两个日期作为输入,并生成一个临时表 foo,其中包含它们之间的所有潜在日期。然后,它与原始查询执行左连接,以包含所有缺失的日期并返回完整的数据集。

客户端检查(可选)

此外,一个简单的检查可以在客户端(例如 Perl)实现,以处理当前日期不等于前一个日期加一天的情况。在这种情况下,可以将其他计数为零的字符串添加到输出中。

以上是如何用零计数填充 SQL 查询结果中的缺失日期?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板