Aller au contenu
Agrégations

SUM, AVG, MIN, MAX

Ces fonctions résument une colonne numérique en une seule valeur : total, moyenne, plus petite et plus grande valeur, sur toute la table ou par groupe. Base de tout indicateur chiffré.

  • somme
  • moyenne
  • minimum
  • maximum
  • TOTAL
  • ROUND

Syntaxe

Modèle
SELECT groupe, SUM(col), AVG(col), MIN(col), MAX(col)FROM tableGROUP BY groupe;

Exemple

Exemple concret
SELECT category,       COUNT(*) AS nb_produits,       ROUND(AVG(price), 2) AS prix_moyen,       MIN(price) AS prix_min,       MAX(price) AS prix_maxFROM productsGROUP BY categoryORDER BY category;-- Jeu de données : boutique-- Résultat attendu :-- Audio | 2 | 114.99 | 79.99 | 149.99-- Informatique | 3 | 59.99 | 29.99 | 89.99

À retenir

  1. Toutes ces fonctions ignorent les NULL : AVG divise par le nombre de valeurs non nulles, pas par le nombre de lignes.
  2. Sur un ensemble vide, SUM renvoie NULL et non 0. Écrivez COALESCE(SUM(x), 0), ou TOTAL(x) dans SQLite, qui renvoie 0.0.
  3. Piège : SUM(x) / COUNT(*) sur des entiers fait une division entière dans SQLite et PostgreSQL (7 / 2 = 3). AVG ne pose pas ce problème dans ces deux moteurs, mais dans SQL Server AVG d'une colonne entière renvoie un entier tronqué : écrivez AVG(x * 1.0).
  4. Piège : SQLite ne refuse pas SUM sur du texte. Il convertit chaque valeur et compte 0 pour un texte non numérique (SUM de 'x', '3' et 'y' donne 3). PostgreSQL lève une erreur. Vérifiez le type de vos colonnes avec typeof().

Voir aussi