ホームページ  >  記事  >  データベース  >  MySQL で空の値を含む特定の日付範囲内の月を生成するにはどうすればよいですか?

MySQL で空の値を含む特定の日付範囲内の月を生成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 22:59:29994ブラウズ

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
);

このテーブルに、データ内で発生する可能性のあるすべての月を入力します。

次に、LEFT JOIN を使用して元の月を結合します。テーブル myTable と dateTable:

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

これにより、myTable に値のない月も含め、指定された範囲内のすべての月の平均値が取得されます。 LEFT JOIN は、対応する値があるかどうかに関係なく、myTable 内のすべての行に DT.myDate を照合することにより、空の値が確実に含まれるようにします。

GROUP BY 句を調整して結果をグループ化することで、出力をさらにカスタマイズできます。四半期や曜日などの希望の期間。このアプローチは、完全な月をカバーする包括的なレポートを生成する便利で効率的な方法を提供します。

以上がMySQL で空の値を含む特定の日付範囲内の月を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。