ホームページ >データベース >mysql チュートリアル >複数の SQL テーブルのデータを正しく要約し、不正確な結果を回避するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。