如何在 MySQL 中產生特定日期範圍內的月份(包括空值)?

Mary-Kate Olsen
發布: 2024-10-31 22:59:29
原創
1073 人瀏覽過

How to Generate Months within a Specific Date Range in MySQL, Including Empty Values?

產生特定日期範圍內的月份,包括空值

問題:

問題:

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板