ホームページ >データベース >mysql チュートリアル >GROUP BY を使用せずに SUM() を使用すると予期しない結果が返されるのはなぜですか?

GROUP BY を使用せずに SUM() を使用すると予期しない結果が返されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 16:46:18556ブラウズ

Why Does Using SUM() Without GROUP BY Return Unexpected Results?

集計関数を使用した GROUP BY の必要性を理解する

提供された例は、GROUP を使用せずに従業員の給与を合計するという複雑なシナリオを示しています。 BY 句により、元のテーブルが出力として返されます。この謎を解明するために、SUM() のような集計関数を使用する場合の GROUP BY の目的と役割を詳しく調べます。

GROUP BY は、名前が示すように、指定された基準に基づいて行をグループ化します。このグループ化は、個々の行ではなく行のグループに対して計算を実行する集計関数を使用する場合に特に重要になります。この場合、SUM() 関数は、一意の EmployeeID ごとに MonthlySalary の合計を計算します。

GROUP BY を使用しない場合、クエリは、EmployeeID でグループ化せずにすべての MonthlySalary 値の合計を計算しようとします。これは、基本的にテーブル内のすべての給与を合計し、それらを 1 つの大規模なプールとして扱うため、誤った結果が得られます。

次の例を考えてみましょう。

SELECT EmployeeID, SUM(MonthlySalary)
FROM Employee;

このクエリの結果EmployeeID が NULL の単一行とすべての給与の合計になります。この結果は、従業員固有の給与合計に関する必要な情報を提供しないため、意味がありません。

クエリに GROUP BY を含めることで、データベースに一意の EmployeeID ごとに計算を強制的に実行させ、結果として意味のある結果が得られます。出力:

SELECT EmployeeID, SUM(MonthlySalary)
FROM Employee
GROUP BY EmployeeID;

これで、結果は各従業員の個別の行で構成され、それぞれの EmployeeID と対応する合計が表示されます。 MonthlySalaries.

要約すると、GROUP BY により、SUM() のような集計関数が特定の行グループに適用され、意味のあるデータの集計が可能になります。これにより、有意義な洞察の抽出が容易になり、結果の誤解を防ぐことができます。

以上がGROUP BY を使用せずに SUM() を使用すると予期しない結果が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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