Je comprends l'intérêt de GROUP BY x
Mais comment ça
GROUP BY x, y
marche, et qu'est-ce que ça veut dire?
Je comprends l'intérêt de GROUP BY x
Mais comment ça
GROUP BY x, y
marche, et qu'est-ce que ça veut dire?
Réponses:
Group By X
signifie mettre tous ceux qui ont la même valeur pour X dans le même groupe .
Group By X, Y
signifie mettre tous ceux qui ont les mêmes valeurs pour X et Y dans le même groupe .
Pour illustrer à l'aide d'un exemple, disons que nous avons le tableau suivant, qui concerne qui suit quelle matière à l'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 group by
uniquement une colonne sur le sujet; dire:
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 étions à group by
deux colonnes:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
nous obtiendrions ceci:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
En effet, lorsque nous regroupons par deux colonnes, il est dit "Groupez-les de sorte que tous ceux qui ont le même sujet et le même semestre soient dans le même groupe, puis calculez toutes les fonctions d'agrégation (Count, Sum, Average, 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 faisant ITB001 au semestre 1 et deux le faisant au semestre 2. Les deux personnes faisant MKB114 sont au semestre 1, donc il n'y a 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.
GROUP BY A,B
c'est la même chose que GROUP BY B,A
?
GROUP BY a, b
et GROUP BY a AND b
puisque le second ne répertorie que les éléments groupés ayant exactement le même contenu et aucun "sous-groupe". Dans ce cas, la sortie serait la même que la première.
La GROUP BY
clause est utilisée conjointement avec les fonctions d'agrégation pour regrouper l'ensemble de 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;
Rappelez-vous cette commande:
1) SELECT (est utilisé pour sélectionner des données dans une base de données)
2) FROM (la clause est utilisée pour lister les tables)
3) WHERE (la clause est utilisée pour filtrer les enregistrements)
4) 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)
5) HAVING (la clause est utilisée en combinaison avec la clause GROUP BY pour restreindre les groupes de lignes renvoyées uniquement à ceux dont la condition est VRAIE)
6) ORDER BY (le mot-clé est utilisé pour trier l'ensemble de résultats)
Vous pouvez utiliser tous ces éléments si vous utilisez des fonctions d'agrégation, et c'est l'ordre dans lequel elles doivent être définies, sinon vous pouvez obtenir une erreur.
Les fonctions d'agrégation sont les suivantes:
MIN renvoie la plus petite valeur dans une colonne donnée
SUM renvoie la somme des valeurs numériques dans 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'une table