Table des matières
Les fonctions de groupe sont intégrées aux fonctions SQL qui opèrent sur des groupes de lignes et renvoient une valeur pour l'ensemble du groupe. Ces fonctions sont : GROUPE, AVOIR, COMPTE, MAX, MIN, MOYEN, SOMME, DISTINCT.La clause PAR GROUPE utilisé en conjonction avec des fonctions de groupe pour récupérer des données regroupées selon une ou plusieurs colonnes.
Des sous-totaux peuvent être obtenus avec la clause GROUP BY. Une requête avec une clause GROUP BY est appelée requête groupée car elle regroupe les données dans la table source et produit une seule ligne récapitulative pour chaque groupe formé. Les colonnes indiquées dans le GROUP BY sont appelées colonnes de regroupement.
Supposons une table des ventes avec les champs suivants
Identifiant | produit | prix | quantité | identifiant vendeur
Exemple:
SÉLECTIONNER SUM (prix) comme ventes totales FROM ventes
Obtient la somme des ventes totales qui ont été réalisées, la valeur est attribuée aux ventes totales
SELECT SUM (ventes) FROM sales GROUP BY id employeeUn groupe est formé pour chaque employé et la somme est calculée sur les lignes de chaque groupe. L'exemple précédent obtient une liste avec la somme des ventes de chacun des employés.
La requête serait mieux d'inclure dans la liste de sélection le nom du salarié pour savoir à quel salarié correspond la somme des ventes :
SELECT employés.nom, SUM (prix) AS salesby employee FROM sales, employee Where sales.idemployee = employee.idemployee GROUP BY ideemployee
Seulement:
valeurs constantes
fonctions de colonne
colonnes de regroupement (colonnes qui apparaissent dans la clause GROUP BY)
ou toute expression basée sur ce qui précède.
Exemple: Nous voulons si nous avions des succursales et nous aimerions obtenir la somme des ventes des employés regroupés par région et par ville :
SELECTIONNER SOMME (prix) en tant que ventes par succursale FROM ventes GROUP BY région, ville
Il est regroupé d'abord par région, et au sein de chaque région par ville.
Toutes les lignes qui ont une valeur nulle dans le champ de regroupement deviennent un seul groupe. C'est-à-dire qu'il traite la valeur nulle comme n'importe quelle valeur à des fins de regroupement.
La clause HAVING
La clause HAVING permet de sélectionner des lignes de la table résultant d'une requête de regroupement
Seuls les éléments suivants peuvent apparaître dans la condition de sélection :
valeurs constantes
fonctions de colonne
regroupement de colonnes (colonnes qui apparaissent dans la clause GROUP BY)
ou toute expression basée sur ce qui précède.
Exemple : Nous voulons savoir quels salariés ont vendu plus de 10 000 euros
SÉLECTIONNER * DU GROUPE DE VENTE PAR idemployee AVOIR MOYEN (prix)> 10000
Pour obtenir ce qui est demandé, nous devons calculer les ventes moyennes des employés. Nous devons regrouper les employés par identifiant et calculer la moyenne pour chacun des ventes par employé, enfin nous devons sélectionner dans le résultat les lignes qui ont une moyenne plus élevée que 10 000.
Comment s'exécute une requête de groupe en interne ?
Tout d'abord, la table de source de données est formée selon la clause FROM,
les lignes sont sélectionnées dans la source de données selon la clause WHERE,
les groupes de lignes sont formés selon la clause GROUP BY,
Pour chaque groupe, une ligne est obtenue dans le tableau résultant avec les valeurs qui apparaissent dans les clauses GROUP BY, HAVING et dans la liste de sélection,
les lignes sont sélectionnées dans la table résultante selon la clause HAVING,
les colonnes qui n'apparaissent pas dans la liste de sélection sont supprimées du tableau résultant,
les lignes de la table résultante sont ordonnées selon la clause ***** BY
Une requête devient une requête de groupe dès que GROUP BY, HAVING ou une fonction de colonne apparaît.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif