web-dev-qa-db-fra.com

Utiliser group by sur plusieurs colonnes

Je comprends le but de GROUP BY x

Mais comment fonctionne GROUP BY x, y et que signifie-t-il?

Group By X signifie mettez tous ceux qui ont la même valeur pour X dans le même groupe.

Group By X, Y signifie mettez tous ceux qui ont les mêmes valeurs pour X et Y dans le même groupe.

Pour illustrer notre propos à l'aide d'un exemple, supposons que nous ayons le tableau suivant, indiquant 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 uniquement; 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 devions group by deux colonnes:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

nous aurions ceci:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

En effet, lorsque nous groupons par deux colonnes, il est dit "Groupez-les pour que tous ceux ayant le même sujet et le même semestre soient dans le même groupe, puis calculez toutes les fonctions d'agrégation (Compter , 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 des personnes effectuant MKB114 sont dans le semestre 1, il n’ya donc pas de ligne pour le semestre 2 (aucune donnée n’entre dans le groupe "MKB114, semestre 2")

Espérons que cela a du sens.

1865
Smashery

La clause GROUP BY est utilisée conjointement avec les fonctions d'agrégation pour regrouper l'ensemble de résultats en 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 (sert à sélectionner les données d'une base de données)

2) FROM (la clause est utilisée pour lister les tables)

3) WHERE (la clause sert à 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 en 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 à celles dont la condition est TRUE)

6) ORDER BY (le mot clé est utilisé pour trier le jeu de résultats)

Vous pouvez utiliser tous ces éléments si vous utilisez des fonctions d'agrégat. C'est dans cet ordre qu'ils doivent être définis, sinon vous risquez d'obtenir une erreur.

Les fonctions d'agrégat sont:

MIN renvoie la plus petite valeur d'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.

24
S. Mayol