產生特定日期範圍內的月份,包括空值
問題:
問題:在MySQL 中,即使某些月份不存在值,如何產生給定日期範圍內所有月份的清單?
答案:CREATE TABLE dateTable ( myDate DATE NOT NULL, myYear SMALLINT NOT NULL, myMonth TINYINT UNSIGNED NOT NULL );要實現此目的,請建立包含所有可能月份的單獨表,例如:
SELECT DT.myYear, DT.myMonth, AVG(myTable.value1) AS avg_value_1, AVG(myTable.value2) AS avg_value_2 FROM dateTable AS DT LEFT JOIN myTable ON DT.myDate = myTable.save_date WHERE DT.myDate BETWEEN '2009-01-01' AND '2009-07-01' GROUP BY DT.myYear, DT.myMonth用您的資料中可能遇到的所有月份填入此表。 然後,使用LEFT JOIN 組合您的原始資料表myTable,帶有dateTable:這將擷取指定範圍內所有月份的平均值,包括myTable 中沒有值的月份。 LEFT JOIN 透過將 DT.myDate 與 myTable 中的所有行匹配來確保包含空值,無論它們是否具有相應的值。 您可以透過調整 GROUP BY 子句對結果進行分組來進一步自訂輸出所需的時間段,例如財務季度或一周中的幾天。這種方法提供了一種便捷有效的方式來產生涵蓋完整月份的綜合報告。
以上是如何在 MySQL 中產生特定日期範圍內的月份(包括空值)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!