首頁 >資料庫 >mysql教程 >如何用零計數填入 SQL 查詢結果中的缺失日期?

如何用零計數填入 SQL 查詢結果中的缺失日期?

DDD
DDD原創
2024-12-12 21:51:15316瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn