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

CTRL+C pour copier, CTRL+V pour coller
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
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
  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

CTRL+C pour copier, CTRL+V pour coller
1
SELECT Societe.Nom, AVG(Personne.Age)
2
FROM Personne, Societe
3
WHERE Personne.NomSoc = Societe.Nom
4
GROUP BY Societe.Nom
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.

Regroupement avec un attribut et une fonctionInformations

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

Exemple

CTRL+C pour copier, CTRL+V pour coller
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
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).

Regroupement avec deux attributs et une fonctionInformations

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.

CTRL+C pour copier, CTRL+V pour coller
1
SELECT Societe.Nom
2
FROM Societe
3
GROUP BY Societe.Nom
SELECT Societe.Nom
FROM Societe
GROUP BY Societe.Nom
Exemple d'agrégat inutile (countrycode est une clé de country)