ホームページ  >  記事  >  データベース  >  MySQL でゼロ値を含む日付範囲内のすべての月を抽出する方法は?

MySQL でゼロ値を含む日付範囲内のすべての月を抽出する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 19:42:29353ブラウズ

How to Extract All Months within a Date Range, Including Zero Values in MySQL?

ゼロ値を含む日付範囲内のすべての月の抽出

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 サイトの他の関連記事を参照してください。

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