ホームページ >データベース >mysql チュートリアル >SQL の集計関数なしで GROUP BY はどのように機能しますか?

SQL の集計関数なしで GROUP BY はどのように機能しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 08:35:23396ブラウズ

How Does GROUP BY Work Without Aggregate Functions in SQL?

集計関数を使用しないグループ化: メカニズムを理解する

GROUP BY は、次のデータに基づいてデータをグループ化して要約できる強力な SQL 句です。指定された列。 SUM、COUNT、AVG などの集計関数は通常、GROUP BY とともに使用されますが、集計関数を使用せずに GROUP BY を使用することもできます。この概念を理解することは、GROUP BY の機能を最大限に活用するために重要です。

集計関数なしで GROUP BY を使用する場合、各グループの出力が 1 行になることを理解することが重要です。 GROUP BY 句に含まれていない列の値は、グループ内のすべての行に事実上複製されます。

EMP テーブルについて考えてみましょう:

ename | sal
-------+------
Smith  | 1000
Jones  | 1200
Davis  | 1100
Wilson | 1200
Brown  | 1300

シナリオ 1: 無効な GROUP BY 式

SELECT ename, sal
FROM emp
GROUP BY ename, sal;

このクエリはエラーで失敗しますORA-00979 sal が GROUP BY 句に含まれていないため。すべての行の sal の値が異なるため、従業員ごとに複数の行が作成されます。

シナリオ 2: 有効な GROUP BY 式

SELECT ename, sal
FROM emp
GROUP BY ename;

このクエリは有効ですこれは、行を名前ごとにグループ化し、各従業員に対して一意の行を確保するためです。 sal の値は、同じ従業員に属する行ごとに重複します。

シナリオ 3: 無効な GROUP BY 式

SELECT ename, sal
FROM emp
GROUP BY sal;

このクエリは、次の理由により無効です。行を sal でグループ化しようとします。その結果、同じ従業員に対して複数の行が作成されます。給与.

シナリオ 4: 無効な GROUP BY 式

SELECT empno, ename, sal
FROM emp
GROUP BY sal, ename;

GROUP BY 句の列の順序は列の順序と一致する必要があるため、このクエリは無効ですSELECT 句内。

シナリオ 5: 有効な GROUP BY 式

SELECT empno, ename, sal
FROM emp
GROUP BY empno, ename, sal;

GROUP BY 句の列の順序が SELECT 句の列の順序と一致するため、このクエリは有効です。結果には、empno、ename、sal の個別の組み合わせごとに 1 つの行が含まれます。

要約すると、集計関数を使用しない GROUP BY は、同じ値を共有する行をグループ化することで、指定された列から重複を削除します。ただし、GROUP BY 句に含まれていないすべての列の出力行には重複した値が含まれます。

以上がSQL の集計関数なしで GROUP BY はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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