4.7. INTERROGERUNEBASE–LANGAGEDEMANIPULATIONDEDONNÉES :SELECT (2e PARTIE) {S8}91
Si les regroupements sont effectués selon une expression unique, les groupes sont définis par les
ensembles de lignes pour lesquelles cette expression prend la même valeur. Si plusieurs expressions sont
spécifiées (expression_1, expression_2, . . .) les groupes sont définis de la façon suivante : parmi toutes
les lignes pour lesquelles expression_1 prend la même valeur, on regroupe celles ayant expression_2
identique, etc.
Un SELECT avec une clause GROUP BY produit une table résultat comportant une ligne pour chaque
groupe.
Les fonctions d’agrégation
AVG( [ DISTINCT | ALL ] expression ) : Calcule lamoyennedesvaleursde l’expressionexpression.
COUNT( * | [DISTINCT | ALL] expression ) : Dénombre le nombre de lignes du résultat de la
requête. Si expression est présent, on ne compte que les lignes pour lesquelles cette expression
n’est pas NULL.
MAX( [ DISTINCT | ALL ] expression ) : Retourne lapluspetitedesvaleursde l’expressionexpression.
MIN([ DISTINCT | ALL ] expression ) : Retourne laplusgrandedesvaleursde l’expressionexpression.
STDDEV([ DISTINCT | ALL ] expression) : Calcule l’écart-typedesvaleursde l’expressionexpression.
SUM([ DISTINCT | ALL ] expression) : Calcule la somme des valeurs de l’expression expression.
VARIANCE([ DISTINCT | ALL ] expression) : Calcule la variancedesvaleursde l’expressionexpression.
DISTINCT indique à la fonction de groupe de ne prendre en compte que des valeurs distinctes. ALL
indique à la fonction de groupe de prendre en compte toutes les valeurs, c’est la valeur par défaut.
Aucune des fonctions de groupe ne tient compte des valeurs NULL à l’exception de COUNT(*). Ainsi,
SUM(col) est la somme des valeurs non NULL de la colonne col. De même AVG est la somme des valeurs
non NULL divisée par le nombre de valeurs non NULL.
Il est tout à fait possible d’utiliser des fonctions d’agrégation sans clause GROUP BY. Dans ce cas, la
clause SELECT ne doit comporter que des fonctions d’agrégation et aucun nom de co