Question Utilisation de group by sur plusieurs colonnes


Je comprends le point de GROUP BY x 

Mais comment ça marche? GROUP BY x, y travail, et qu'est-ce que cela signifie?


747
2018-03-10 23:11


origine


Réponses:


Group By X veux dire mettre tous ceux qui ont la même valeur pour X dans le groupe.

Group By X, Y veux dire mettre tous ceux qui ont les mêmes valeurs pour X et Y dans un groupe.

Pour illustrer à l'aide d'un exemple, disons que nous avons le tableau suivant, à savoir qui fréquente un sujet 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; dire:

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

Vous obtiendrez quelque chose comme:

Subject    Count
------------------------------
ITB001     5
MKB114     2

... parce qu'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

C'est parce que, lorsque nous regroupons par deux colonnes, il est dit "Regroupez-les pour 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 agrégées (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 les gens qui font ITB001 au semestre 1, et deux le faire 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, Semester 2")

J'espère que cela a du sens.


1580
2018-03-10 23:24



La clause GROUP BY est utilisée conjointement avec les fonctions d'agrégation pour regrouper le jeu 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 (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 est utilisée pour filtrer les enregistrements)

4) GROUP BY (une 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 (clause utilisée en combinaison avec la clause GROUP BY pour   limiter les groupes de lignes renvoyées uniquement à ceux dont la condition   est vrai)

6) ORDER BY (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égation, et c'est l'ordre dans lequel ils doivent être définis, sinon vous pouvez obtenir une erreur.

Les fonctions agrégées sont:

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 dans une table


18
2017-12-15 22:14