Définition de l'agrégation

DéfinitionAgré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

1
SELECT liste d'attributs de partionnement à projeter et de fonctions de calcul
2
FROM liste de relations
3
WHERE condition à appliquer avant calcul de l'agrégat
4
GROUP BY liste ordonnée d'attributs de partitionnement
  1. 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

  2. Les fonctions d'agrégation sont appliquées sur les attributs concernés

Exemple

1
SELECT Societe.Nom, AVG(Personne.Age)
2
FROM Personne, Societe
3
WHERE Personne.NomSoc = Societe.Nom
4
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.

Regroupement avec un attribut et une fonctionInformations[1]

Cette requête calcul l'âge moyen du personnel pour chaque société.

Exemple

1
SELECT Societe.Nom, Societe.Dpt AVG(Personne.Age)
2
FROM Personne, Societe
3
WHERE Personne.NomSoc = Societe.Nom
4
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).

Regroupement avec deux attributs et une fonctionInformations[2]

Cette requête calcul l'âge moyen du personnel pour chaque département de chaque société.

RemarqueRequê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.

1
SELECT Societe.Nom
2
FROM Societe
3
GROUP BY Societe.Nom
Exemple d'agrégat inutile (countrycode est une clé de country)