ゼロ値を含む日付範囲内のすべての月の抽出
MySQL では、指定した日付内の月ごとの平均値を抽出できます。特定の月の値がゼロであっても、範囲は変わりません。この機能は、すべての月が考慮され、正確に表示されるようにするために非常に重要です。
これを実現するには、1 つのアプローチは、必要な範囲内のすべての可能な月を含む「dateTable」を作成することです。このテーブルには、「日付」、「月」、「年」などの列を追加できます。
その後、元のクエリを変更して、「dateTable」との LEFT JOIN を実行できます。一致する日付列。これにより、メイン テーブルに対応するエントリがあるかどうかに関係なく、指定された日付範囲内のすべての月が確実に取得されます。クエリは次のようになります。
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 `dateTable`.`myDate` = `myTable`.`save_date` WHERE `dateTable`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01' GROUP BY `DT`.`myYear`, `DT`.`myMonth`
この変更により、「dateTable」に含まれる列に基づいた柔軟なレポートが可能になります。たとえば、「財務四半期」または「曜日」によるグループ化は、「GROUP BY」句を適宜調整することで実現できます。
LEFT JOIN と包括的な「dateTable」を利用することで、このアプローチは効率的にデータを取得します。指定された日付範囲内のすべての月を対象とし、値がゼロの月も確実に出力に含まれるようにします。
以上がMySQL でゼロ値を含む日付範囲内のすべての月を抽出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。