La clause SQL GROUP BY est utilisée pour organiser des données identiques en groupes basés sur une ou plusieurs colonnes. Il est couramment utilisé avec des fonctions d'agrégation telles que COUNT() SUM() AVG() MAX() et MIN() pour effectuer des calculs sur chaque groupe de données.
Exemple: Nous allons d'abord créer une base de données SQL de démonstration et une table sur lesquelles nous utiliserons la commande GROUP BY.
comment sélectionner des colonnes de différentes tables dans SQL
Requête:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Sortir:
Syntaxe:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- fonction_agrégat : fonction utilisée pour l'agrégation, par ex. SOMME() AVG() COUNT().
- nom_table : nom de la table dans laquelle les données sont sélectionnées.
- condition: Condition facultative pour filtrer les lignes avant le regroupement (utilisée avec WHERE).
- colonne1 colonne2 : Colonnes sur lesquelles le regroupement est appliqué.
Exemples de GROUPE PAR
Supposons que nous ayons une table Student. Nous allons insérer quelques exemples de données dans ce tableau, puis effectuer des opérations à l'aide de GROUP BY pour comprendre comment il regroupe les lignes en fonction d'une colonne et agrège les données.
Exemple 1 : regrouper par une seule colonne
Lorsque nous regroupons par une seule colonne, les lignes avec la même valeur dans cette colonne sont combinées. Par exemple, le regroupement par matière montre combien d'étudiants sont inscrits dans chaque matière.
Requête:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Sortir:
Explication: Chaque matière apparaît deux fois dans le tableau, le décompte pour les mathématiques et les sciences anglaises est donc de 2.
Exemple 2 : regrouper par plusieurs colonnes
L’utilisation de GROUP BY avec plusieurs colonnes regroupe les lignes qui partagent les mêmes valeurs dans ces colonnes. Par exemple, le regroupement par matière et par année combinera les lignes avec la même paire matière-année et nous pourrons compter le nombre d'élèves appartenant à chaque groupe.
Requête:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Sortir:
code gris
Explication : Les étudiants de même matière et année sont regroupés. Étant donné que chaque paire sujet-année apparaît deux fois, le décompte est de 2 pour chaque groupe.
Clause HAVING dans la clause GROUP BY
La clause HAVING est utilisée pour filtrer les résultats après le regroupement, en particulier lorsque vous travaillez avec des fonctions d'agrégation telles que SUM() COUNT() ou AVG(). Contrairement à WHERE, il applique des conditions sur des données groupées.
Exemple 1 : Filtrer par salaire total
Dans cette requête, nous regroupons les employés par nom et affichons uniquement ceux dont le salaire total est supérieur à 50 000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Sortir
Explication : Seuls les salariés dont le salaire total dépasse 50 000 apparaissent dans le résultat.
Exemple 2 : Filtrer par salaire moyen
Dans cette requête, nous regroupons les employés par âge et affichons uniquement les tranches d'âge dont le salaire moyen est supérieur à 60 000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Sortir:
Explication: Cette requête regroupe les employés par âge et calcule le salaire moyen pour chaque âge. Seules les tranches d'âge dont le salaire moyen est supérieur à 60 000 sont affichées.
Créer un quiz