Je comprends l'intérêt de "GROUPEMENT PAR X".
Mais comment fonctionne GROUP BY x, y
, et qu'est-ce que cela signifie ?
Le terme "groupe par X" signifie que tous ceux qui ont la même valeur pour X sont regroupés dans un seul groupe.
Regrouper par X, Y" signifie regrouper tous ceux qui ont la même valeur pour X et Y dans un seul groupe.
Pour illustrer cela à l'aide d'un exemple, disons que nous avons le tableau suivant, qui indique qui suit quelle matière dans une université :
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Lorsque vous utilisez un group by
sur la colonne sujet seulement ; disons :
select Subject, Count(*)
from Subject_Selection
group by Subject
Vous obtiendrez quelque chose comme :
Subject Count
------------------------------
ITB001 5
MKB114 2
...car il y a 5 entrées pour ITB001, et 2 pour MKB114.
Si nous devions grouper par
deux colonnes :
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
on obtiendrait ceci :
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
En effet, lorsque nous regroupons par deux colonnes, cela signifie "Regroupez-les de manière à ce que tous ceux qui ont la même matière et le même semestre soient dans le même groupe, puis calculez toutes les fonctions d'agrégation (compte, somme, moyenne, etc.) pour chacun de ces groupes". Dans cet exemple, cela est démontré par le fait que, lorsque nous les comptons, il y a trois personnes qui font ITB001 au semestre 1, et deux qui le font au semestre 2. Les deux personnes qui suivent le cours MKB114 sont au semestre 1, il n'y a donc pas de ligne pour le semestre 2 (aucune donnée ne rentre dans le groupe "MKB114, Semestre 2" ;).
J'espère que cela a du sens.
La clause GROUP BY
est utilisée en conjonction avec les fonctions d'agrégation pour regrouper l'ensemble des résultats par une ou plusieurs colonnes, par exemple :
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Retenez cet ordre :
SELECT (est utilisé pour sélectionner des données dans une base de données)
FROM (clause utilisée pour lister les tables)
WHERE (clause utilisée pour filtrer les enregistrements)
GROUP BY (la clause peut être utilisée dans une instruction SELECT pour collecter des données sur plusieurs enregistrements et regrouper les résultats par une ou plusieurs colonnes)
HAVING (clause utilisée en combinaison avec la clause GROUP BY pour restreindre les groupes de lignes retournées aux seules lignes dont la condition est VRAIE)
ORDER BY (mot-clé utilisé pour trier l'ensemble des résultats)
Vous pouvez utiliser tous ces éléments si vous utilisez des fonctions d'agrégation, et c'est dans cet ordre qu'ils doivent être définis, sinon vous risquez d'obtenir une erreur.
Les fonctions d'agrégation sont :
MIN renvoie la plus petite valeur dans une colonne donnée
SUM renvoie la somme des valeurs numériques d'une colonne donnée.
AVG renvoie la valeur moyenne d'une colonne donnée.
COUNT renvoie le nombre total de valeurs dans une colonne donnée.
COUNT(*) renvoie le nombre de lignes d'un tableau.