Maison >base de données >tutoriel mysql >Comment GROUP BY fonctionne-t-il sans fonctions d'agrégation dans SQL ?

Comment GROUP BY fonctionne-t-il sans fonctions d'agrégation dans SQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-25 08:35:23396parcourir

How Does GROUP BY Work Without Aggregate Functions in SQL?

Group By sans fonctions d'agrégation : comprendre le mécanisme

GROUP BY est une clause SQL puissante qui nous permet de regrouper et de résumer des données en fonction de colonnes spécifiées. Bien que les fonctions d'agrégation telles que SUM, COUNT et AVG soient généralement utilisées avec GROUP BY, il est également possible d'utiliser GROUP BY sans fonctions d'agrégation. Comprendre ce concept est crucial pour exploiter toutes les capacités de GROUP BY.

Lorsque vous utilisez GROUP BY sans fonctions d'agrégation, il est essentiel de comprendre que chaque groupe donnera lieu à une seule ligne dans le résultat. Les valeurs des colonnes non incluses dans la clause GROUP BY seront effectivement dupliquées pour chaque ligne du groupe.

Considérez la table EMP :

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

Scénario 1 : GROUPE invalide BY Expression

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

Cette requête échoue avec l'erreur ORA-00979 car sal n'est pas inclus dans la clause GROUP BY. Chaque ligne aurait une valeur différente pour sal, ce qui entraînerait plusieurs lignes pour chaque employé.

Scénario 2 : expression GROUP BY valide

SELECT ename, sal
FROM emp
GROUP BY ename;

Cette requête est valide car il regroupe les lignes par nom, ce qui garantit une ligne unique pour chaque employé. Les valeurs de sal seront dupliquées pour chaque ligne appartenant au même employé.

Scénario 3 : Expression GROUP BY non valide

SELECT ename, sal
FROM emp
GROUP BY sal;

Cette requête n'est pas valide car elle tente de regrouper les lignes par sal, ce qui entraînerait plusieurs lignes pour les employés ayant le même salaire.

Scénario 4 : Expression GROUP BY non valide

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

Cette requête n'est pas valide car l'ordre des colonnes dans la clause GROUP BY doit correspondre à l'ordre des colonnes dans la clause SELECT.

Scénario 5 : Expression GROUP BY valide

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

Cette requête est valide car l'ordre des colonnes dans GROUP BY La clause correspond à l'ordre des colonnes dans la clause SELECT. Le résultat contiendra une seule ligne pour chaque combinaison distincte de empno, ename et sal.

En résumé, GROUP BY sans fonctions d'agrégation supprime les doublons des colonnes spécifiées en regroupant les lignes qui partagent les mêmes valeurs. Cependant, toutes les colonnes non incluses dans la clause GROUP BY auront des valeurs dupliquées dans les lignes de sortie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn