ホームページ > データベース > mysql チュートリアル > 複数のデータベーステーブルにわたる SUM 値を正しく集計するにはどうすればよいですか?

複数のデータベーステーブルにわたる SUM 値を正しく集計するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-29 05:45:11
オリジナル
939 人が閲覧しました

How to Correctly Aggregate SUM Values Across Multiple Database Tables?

複数のテーブルにわたるデータベース集計: 合計計算の修正

データベース内の複数のテーブルを扱う場合、SUM などの集計関数は慎重に処理する必要があります。正確な結果を保証します。これは、両方の列 [PROJECT] と [Value] を持つ 2 つのテーブル AP と INV からの値の合計を計算しようとするクエリによって例示されます。目的の出力は次のようになります:

PROJECT | SUM_AP | SUM_INV
ログイン後にコピー

ただし、指定されたクエリは合計エラーにより誤った結果を示しました:

SELECT AP.[PROJECT],
SUM(AP.Value) AS SUM_AP, 
SUM(INV.Value) AS SUM_INV
FROM AP INNER JOIN INV ON (AP.[PROJECT] =INV.[PROJECT])
WHERE AP.[PROJECT] = 'XXXXX'
GROUP BY AP.[PROJECT]
ログイン後にコピー

問題は値のグループ化にあります。 GROUP BY 句は重複した値を結合するため、合計が不正確になります。

これを修正するには、サブ選択を使用できます。

SELECT 
    AP1.[PROJECT],
    (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP,
    (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV
FROM AP AS AP1 
    INNER JOIN INV AS INV1 
        ON (AP1.[PROJECT] =INV1.[PROJECT])
WHERE AP1.[PROJECT] = 'XXXXX'
GROUP BY AP1.[PROJECT]
ログイン後にコピー

このアプローチでは、[PROJECT] ごとに合計が個別に計算されます。 ] サブ選択を使用することで、正確な集計が行われます。

以上が複数のデータベーステーブルにわたる SUM 値を正しく集計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート