ホームページ >データベース >mysql チュートリアル >複数の SQL テーブルのデータを正しく要約し、不正確な結果を回避するにはどうすればよいですか?

複数の SQL テーブルのデータを正しく要約し、不正確な結果を回避するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-30 14:50:14700ブラウズ

How to Correctly Summarize Data from Multiple SQL Tables and Avoid Incorrect Results?

SQL での複数のテーブルのデータの要約: 不正確な結果への対処

データ分析の領域では、多くの場合、複数のテーブルからの情報を組み合わせることが必要になります。包括的な理解を得るためにテーブルを作成します。一般的なタスクの 1 つは、共通の列によってグループ化されたこれらのテーブルの値の合計を計算することです。ただし、提供されたコードから明らかなように、データが適切に処理されないと、誤った結果が発生する可能性があります。

提供された最初のクエリ:

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]

は、2 つの値の合計を計算しようとします。特定のテーブル、AP および INV プロジェクト。ただし、問題は GROUP BY 句の使用にあります。 AP.PROJECT で結果をグループ化すると、合計に重複した値が含まれ、合計が不正確になります。

これを修正するには、サブクエリを利用したより堅牢なアプローチが必要です。

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]

この拡張クエリでは、サブクエリを使用して各クエリの値の合計を計算します。 プロジェクトを個別に実行します。サブクエリ内の計算を分離することで、重複した値が合計に含まれるという問題を排除します。結果は、目的の列ごとにグループ化された、複数のテーブルのデータの正確かつ意味のある概要です。

以上が複数の SQL テーブルのデータを正しく要約し、不正確な結果を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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