ホームページ >データベース >mysql チュートリアル >Null 値を含むすべての月を月平均に含めるにはどうすればよいですか?

Null 値を含むすべての月を月平均に含めるにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-01 13:29:05615ブラウズ

How to Include All Months in Monthly Averages, Even Those with Null Values?

Null 値を持つ月を含む、指定された日付範囲からすべての月を抽出します

日付の範囲に基づいて月次平均を計算する場合、値がゼロまたは欠損している月を含める必要があります。これにより、指定された期間内のすべての月が確実に考慮されます。

MySQL でこれを実現するには、指定された範囲内のすべての月を含む別のテーブルを作成する方法があります。 「日付テーブル」と呼ばれるこのテーブルには、適切な日付、年、その他の関連属性を入力できます。

日付テーブルを使用すると、元のデータ テーブルと LEFT JOIN を実行できます。 。 LEFT JOIN 操作を使用すると、元のテーブルに一致する行がない場合でも、日付テーブルのすべての行が結果に含まれるようになります。その結果、出力には、データがあるかどうかに関係なく、指定された範囲内のすべての月が表示されます。

このアプローチを示すクエリの例を次に示します。

<code class="sql">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`</code>

このクエリは次の値を返します。 2009 年 1 月から 7 月までのすべての月 (元の表にデータがない月も含む)。 AVG() 関数は、データのある月の値の集計を処理しますが、LEFT JOIN 演算は、NULL 値のある月にゼロ平均が割り当てられるようにします。

日付テーブルを利用し、LEFT JOIN を実行することで、データの有無に関係なく、指定された日付範囲内のすべての月を効果的に抽出でき、月平均の包括的な分析が可能になります。

以上がNull 値を含むすべての月を月平均に含めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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