Calculs d’agrégats

1.1 Les fonctions statistiques

Les fonctions statistiques sont standard à SQL et permettent le calcul de résultats statistiques sur les lignes d’une table.

  • AVG(colonne) Moyenne des valeurs
  • SUM(colonne) Somme des valeurs
  • MIN(colonne) Valeur minimale
  • MAX(colonne) Valeur maximale
  • COUNT(colonne) Nombre de valeurs dans la colonne
  • COUNT(DISTINCT colonne) Nombre de valeurs distinctes
  • COUNT(*) Nombre de lignes (sans égard aux NULLs)

SUM et AVG doivent obligatoirement traiter des valeurs numériques, alors que MIN, MAX et COUNT peuvent traiter n’importe quel type de valeur.  L’ajout du mot DISTINCT détermine qu’une valeur particulière ne soit calculée qu’une seule fois, peu importe le nombre de fois qu’elle apparaît dans la table.

Remarque:

  • Les NULLs ne sont jamais considérés, i.e. ils ne font pas partie du résultat calculé.
  • COUNT(*) compte des lignes et non des valeurs.
Combien y a-t-il de sorties d’inventaire?

SELECT COUNT(*)
FROM sortie;

1.2 Les regroupements

Utilisées seules, les fonctions statistiques expriment un résultat calculé à partir de la totalité des lignes de la table. Utilisées avec la clause GROUP BY, elles expriment un résultat par groupe.

SELECT liste des colonnes, liste des fonctions statistiques
FROM table
GROUP BY la même liste de colonnes que dans la clause SELECT;

Ainsi, les fonctions statistiques sélectionnées présentent un résultat pour chacune des valeurs de groupe existant dans la table.

Remarque:

Les colonnes (seules) apparaissant dans la clause GROUP BY doivent
obligatoirement apparaître dans la clause SELECT, et vice-versa.

Combien y a-t-il de sorties d’inventaire pour chacun des projets?

SELECT code_projet, COUNT(*)
FROM sortie
GROUP BY code_projet;

1.3 Poser une condition sur des regroupements

De la même façon que la clause WHERE permet de poser des conditions sur les lignes d’une table, la clause HAVING permet de poser des conditions sur les regroupements. Une instruction SELECT peut prendre alors l’apparence suivante:

SELECT liste des colonnes, fonction(s) statistique(s)
FROM table
WHERE condition de ligne
GROUP BY liste des colonnes
HAVING condition de groupe;

La clause HAVING est utilisée pour vérifier des conditions applicables à un groupe et non à une ligne. À cet effet, une fonction statistique peut être utilisée dans la clause HAVING alors qu’elle ne peut pas être utilisée dans une clause WHERE. Un point important est qu’on peut utiliser des fonctions statistiques dans la clause HAVING, ce qui n’est pas possible dans la clause WHERE.

Quelles sont les projets qui ont donné lieu à plus de 10 sorties d’inventaire?

SELECT code_projet
FROM sortie
GROUP BY code_projet
HAVING COUNT(*) > 10;

 

 

Print Friendly, PDF & Email

Laisser un commentaire