Définition de l'agrégation
Définition : Agrégat
Un agrégat est un partitionnement horizontal d'une table en sous-tables, en fonction des valeurs d'un ou plusieurs attributs de partitionnement, suivi éventuellement de l'application d'une fonction de calcul à chaque attribut des sous-tables obtenues.
Synonyme : Regroupement
Syntaxe :
SELECT liste d'attributs de partionnement à projeter et de fonctions de calcul
FROM liste de relations
WHERE condition à appliquer avant calcul de l'agrégat
GROUP BY liste ordonnée d'attributs de partitionnement
La table est divisée en sous-ensembles de lignes, avec un sous-ensemble pour chaque valeur différente des attributs de partitionnement projetés dans le SELECT
Les fonctions d'agrégation sont appliquées sur les attributs concernés
Exemple :
SELECT Societe.Nom, AVG(Personne.Age)
FROM Personne, Societe
WHERE Personne.NomSoc = Societe.Nom
GROUP BY Societe.Nom
Societe.Nom est un ici le seul attribut de partitionnement, donc un sous ensemble est créé pour chaque valeur différente de Societe.Nom, puis la moyenne (fonction AVG) est effectuée pour chaque sous-ensemble.
Cette requête calcul l'âge moyen du personnel pour chaque société.
Exemple :
SELECT Societe.Nom, Societe.Dpt AVG(Personne.Age)
FROM Personne, Societe
WHERE Personne.NomSoc = Societe.Nom
GROUP BY Societe.Nom, Societe.Dpt
Societe.Nom et Societe.Dpt sont les deux attributs de partitionnement, donc un sous-ensemble est créé pour chaque valeur différente du couple (Societe.Nom,Societe.Dpt).
Cette requête calcul l'âge moyen du personnel pour chaque département de chaque société.
Remarque : Requête inutile
La requête est inutile dès lors que l'agrégat est défini sur une valeur unique dans la relation, puisqu'on aura bien une ligne par ligne de la table source.
SELECT Societe.Nom
FROM Societe
GROUP BY Societe.Nom