空の値を含む、特定の日付範囲内の月の生成
質問:
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 サイトの他の関連記事を参照してください。