Un composant important pour l’Analyste pour résumer les données telles que les ventes, le profit, le coût et le salaire. Le résumé des données est très utile pour l’analyste pour créer une visualisation, conclure les résultats et rédiger un rapport. En SQL, la clause GROUP BY est l’un des outils permettant de résumer ou d’agréger les séries de données. Par exemple, vous pouvez résumer les ventes quotidiennes et les combiner dans un seul trimestre et les montrer à la direction. De même, si vous voulez compter le nombre d’employés dans chaque département de l’entreprise. Il regroupe les bases de données sur la base d’une ou plusieurs colonnes et agrège les résultats.
Après avoir regroupé les données, vous pouvez filtrer l’enregistrement groupé en utilisant la clause HAVING. La clause HAVING renvoie les enregistrements groupés qui correspondent à la condition donnée. Vous pouvez également trier les enregistrements groupés en utilisant ORDER BY. ORDER BY utilisé après GROUP BY sur la colonne agrégée.
Dans ce tutoriel, vous allez apprendre la clause GROUP BY en détail avec des exemples pertinents. Voici la liste des sujets que vous allez apprendre dans ce tutoriel :
- Clause GROUP BY
- Clause Having
- Fonctions d’agrégation
- Comparaison de la clause Having et Where en SQL
- GROUP BY avec l’exemple JOIN
- Comparaison de GROUP BY avec d’autres clauses
- Manipulation.on Practice Assignment
- Conclusion
Group By Clause
La clause GROUP BY est utilisée en SQL avec l’instruction SELECT pour organiser des données similaires en groupes. Elle combine les enregistrements multiples dans une ou plusieurs colonnes en utilisant certaines fonctions. Généralement, ces fonctions sont des fonctions d’agrégation telles que min(),max(),avg(), count() et sum() pour combiner dans une ou plusieurs colonnes. Il utilise la stratégie split-apply-combine pour l’analyse des données.
- Dans la
split phase
, Il divise les groupes avec ses valeurs. - Dans la
apply phase
, Elle applique la fonction agrégat et génère une valeur unique. - Dans la
combiner phase
, Elle combine les groupes avec des valeurs uniques en une seule valeur.
Source de l’image
Points à retenir:
- La clause GROUP BY est utilisée avec l’instruction SELECT.
- GROUP BY agrège les résultats sur la base de la colonne sélectionnée : COUNT, MAX, MIN, SUM, AVG, etc.
- GROUP BY renvoie un seul résultat par groupe de données.
- La clause GROUPEMENT PAR suit toujours la clause WHERE.
- La clause GROUPEMENT PAR précède toujours la clause ORDER BY(http://slideplayer.com/slide/15440670/).
Dans l’exemple ci-dessus, le tableau est regroupé en fonction de la colonne DeptID et le salaire est agrégé par département.
La clause d’avoir
La clause d’avoir est utilisée en SQL comme une clause conditionnelle avec la clause GROUP BY. Cette clause conditionnelle renvoie les lignes où les résultats de la fonction d’agrégation correspondaient aux conditions données uniquement. Elle est ajoutée dans le SQL parce que la clause WHERE ne peut pas être combinée avec les résultats de l’agrégat, elle a donc un objectif différent. L’objectif principal de la clause WHERE est de traiter les enregistrements non agrégés ou individuels.
- La clause HAVING est toujours utilisée en combinaison avec la clause GROUP BY.
- La clause HAVING restreint les données sur les enregistrements du groupe plutôt que sur les enregistrements individuels.
- WHERE et HAVING peuvent être utilisés dans une seule requête.
Dans l’exemple ci-dessus, le tableau est groupé sur la base de la colonne DeptID et ces lignes groupées sont filtrées à l’aide de la clause HAVING avec la condition AVG(Salary) > 3000.
Fonctions d’agrégation
Fonctions d’agrégation utilisées pour combiner le résultat d’un groupe en un seul tel que COUNT, MAX, MIN, AVG, SUM, STDDEV, et VARIANCE. Ces fonctions sont également connues comme des fonctions à rangs multiples.
-
SUM()
: Renvoie la somme ou le total de chaque groupe. -
COUNT()
: Renvoie le nombre de lignes de chaque groupe. -
AVG()
: Retourne la moyenne et la moyenne de chaque groupe. -
MIN()
: Renvoie la valeur minimale de chaque groupe. -
MAX()
: Renvoie la valeur minimale de chaque groupe.
Comparer Having et Where Clause en SQL
- Dans certains cas, vous devez filtrer les enregistrements individuels. Dans de tels cas, vous pouvez utiliser la clause WHERE, alors que dans d’autres cas, vous devez filtrer les groupes avec la condition spécifique. Dans de tels cas, vous pouvez utiliser la clause HAVING.
- La clause WHERE filtre les enregistrements tuple par tuple tandis que la clause HAVING filtre le groupe entier.
- Une requête peut avoir les deux clauses( WHERE et la clause HAVING).
- La clause WHERE appliquée en premier et ensuite la clause HAVING.
- La clause WHERE restreint les enregistrements avant la clause GROUP BY, tandis que la clause HAVING restreint les groupes après l’exécution de la clause GROUP BY.
- La clause WHERE peut être utilisée avec SELECT, UPDATE, DELETE et INSERT, tandis que la clause HAVING peut être utilisée uniquement avec l’instruction SELECT.
Image Source
GROUP BY With JOIN Example
La base de données relationnelle normalisée décompose la table complexe en petites tables, ce qui vous aide à éliminer la redondance des données, l’incohérence et à garantir qu’il n’y a pas de perte d’informations. Les tables normalisées nécessitent de joindre les données de plusieurs tables.
Dans l’exemple ci-dessus, l’employé et le département sont joints en utilisant la colonne commune DeptID.
Dans l’exemple ci-dessus, les deux clauses JOIN et GROUP BY sont utilisées ensemble dans une seule requête. Après avoir joint les deux tables(Employee et Department), la table jointe est groupée par le nom du département.
GROUP BY Comparaison avec d’autres clauses
Comparer GROUP BY et DISTINCT
DISTINCT renvoie les valeurs uniques présentes dans la colonne tandis que GROUP BY renvoie les éléments uniques/distincts avec la colonne résultante agrégée. Dans l’exemple suivant, vous pouvez voir les valeurs DISTINCT dans le tableau dept
.
Comparer GROUP BY et ORDER BY
ORDER BY renvoie des éléments triés par ordre croissant et décroissant tandis que GROUP BY renvoie des éléments uniques avec la colonne de résultat agrégée. Dans l’exemple suivant, vous pouvez voir le tableau des salaires trié par ORDER BY ou trié.
Mission pratique
Nom de la table : Livres
Colonnes : ISBN, Titre, Date de publication, Prix, Éditeur
Écrire des requêtes SQL pour les déclarations suivantes et partager vos réponses dans les commentaires :
- Déterminer combien de livres se trouvent dans chaque catégorie.
- Déterminer combien de livres se trouvent dans la catégorie Gestion.
- Déterminer le prix moyen des livres de chaque catégorie.
- Lister le prix du livre le moins cher de chaque catégorie.
Source : Ce devoir est inspiré du livre « Oracle 11g SQL » de John Casteel.
Conclusion
Félicitations, vous êtes arrivé à la fin de ce tutoriel !
Dans ce tutoriel, vous avez couvert beaucoup de détails sur la clause GROUP BY et HAVING. Vous avez appris ce que sont les clauses GROUP BY et HAVING à l’aide d’exemples, la comparaison entre les clauses HAVING et WHERE en SQL, GROUP BY avec JOIN, et la comparaison de GROUP BY avec DISTINCT et ORDER BY. Dans la dernière section, vous avez un devoir de pratique pratique pour évaluer vos connaissances.
Espérons que vous pouvez maintenant utiliser le concept de GROUP BY et la clause HAVING pour analyser vos propres ensembles de données. Merci d’avoir lu ce tutoriel !
Si vous souhaitez en savoir plus sur SQL, suivez le cours Intermediate SQLcourse de DataCamp.