Kodokon kodokon.com

Agréger : COUNT, SUM, AVG, MIN/MAX et GROUP BY

Calculez des totaux, des moyennes et des statistiques par groupe grâce aux fonctions d'agrégat et à GROUP BY.

8 min · 3 questions

Ouvrir cette leçon dans Kodokon

Une fonction d'agrégat prend plusieurs lignes en entrée et renvoie une seule valeur : un total, une moyenne, un minimum... La plus simple est COUNT(*), qui compte les lignes. Elle se combine naturellement avec WHERE : la base filtre d'abord, puis compte.

SQL
SELECT COUNT(*) FROM books;

SELECT COUNT(*) FROM books WHERE genre = 'sf';
7 livres au total, dont 4 de science-fiction

Les autres agrégats essentiels s'appliquent à une colonne : SUM(price) additionne, AVG(price) calcule la moyenne, MIN(year) et MAX(year) trouvent la plus petite et la plus grande valeur. Le mot-clé AS donne un alias, c'est-à-dire un nom lisible à la colonne calculée.

SQL
SELECT SUM(price) AS total FROM books;

SELECT AVG(price) AS avg_sf
FROM books
WHERE genre = 'sf';

SELECT MIN(year), MAX(year) FROM books;
Total : 52.4 ; moyenne sf : 8.375 ; 1888 et 1965

Et pour obtenir une statistique par catégorie ? C'est le rôle de GROUP BY : la base regroupe les lignes qui partagent la même valeur (ici le genre), puis applique l'agrégat à chaque groupe. Le résultat contient une ligne par groupe.

SQL
SELECT genre, COUNT(*) AS nb
FROM books
GROUP BY genre;

SELECT genre, AVG(price) AS avg_price
FROM books
GROUP BY genre;
sf : 4 livres ; aventure : 2 ; conte : 1

Quiz de validation

Vérifiez que vous avez bien retenu les points clés de cette leçon.

  1. Que renvoie SELECT COUNT(*) FROM books; ?
    • Le nombre de colonnes de la table
    • Le nombre de lignes de la table
    • La liste de tous les livres
  2. Quelle fonction calcule le prix moyen des livres ?
    • SUM(price)
    • AVG(price)
    • MEAN(price)
    • MAX(price)
  3. Que produit SELECT genre, COUNT(*) FROM books GROUP BY genre; ?
    • Une ligne par livre, avec son genre
    • Une seule ligne avec le nombre total de livres
    • Une ligne par genre, avec le nombre de livres du genre