Une agrégation résume plusieurs lignes
Une table de commandes décrit des transactions individuelles. Une fonction d’agrégation transforme ces lignes en une valeur synthétique utile à un rapport.
Sans GROUP BY, la requête retourne une seule ligne pour l’ensemble filtré. Le niveau de détail du résultat devient donc global.
SELECT
COUNT(*) AS nombre_commandes,
SUM(montant) AS chiffre_affaires,
AVG(montant) AS panier_moyen
FROM commandes;COUNT compte des lignes ou des valeurs
COUNT(*) compte toutes les lignes qui restent après le filtre. COUNT(colonne) compte seulement les valeurs non NULL de cette colonne.
Cette différence permet de mesurer à la fois un volume total et le taux de renseignement d’une information facultative.
SELECT
COUNT(*) AS nombre_commandes,
COUNT(reference_externe) AS references_renseignees
FROM commandes;SUM additionne les valeurs numériques
SUM(montant) calcule le total des montants non NULL. Ajoutez un filtre pour définir précisément la période, le statut ou le périmètre concerné.
Un chiffre d’affaires n’est interprétable que si la requête précise quelles commandes sont incluses, par exemple uniquement les commandes payées.
SELECT SUM(montant) AS chiffre_affaires
FROM commandes
WHERE statut = 'Payée';AVG calcule la moyenne des valeurs non NULL
AVG(montant) additionne les montants renseignés puis divise par leur nombre. La fonction ignore les montants NULL, comme la plupart des agrégations.
Selon le moteur et le type numérique, le résultat peut contenir plusieurs décimales. ROUND permet de préparer un affichage à deux décimales.
SELECT ROUND(AVG(montant), 2) AS panier_moyen
FROM commandes
WHERE statut = 'Payée';WHERE définit le périmètre avant le calcul
Le filtre est appliqué avant les fonctions d’agrégation. Pour des KPI cohérents, utilisez exactement le même périmètre pour le nombre, le total et la moyenne.
Vous pouvez vérifier le calcul manuellement sur un petit échantillon : le total divisé par le nombre de montants renseignés doit correspondre à la moyenne.
- Définissez le périmètre avant de choisir la formule.
- Donnez un alias métier à chaque indicateur.
- Contrôlez le total et la moyenne sur quelques lignes.
SELECT
COUNT(*) AS nombre_commandes,
SUM(montant) AS chiffre_affaires,
ROUND(AVG(montant), 2) AS panier_moyen
FROM commandes
WHERE statut = 'Payée';Prochaine étape : calculer un indicateur par groupe
Les agrégations de cette leçon produisent une ligne globale. GROUP BY permettra ensuite d’obtenir une ligne par statut, client, catégorie ou mois.
Avant de regrouper, assurez-vous de savoir expliquer le sens de COUNT, SUM et AVG sur l’ensemble complet.
Vérifiez votre compréhension
Pour les commandes payées, retournez leur nombre, leur montant total et leur montant moyen arrondi à deux décimales.
SELECT
-- trois indicateurs
FROM commandes
WHERE -- périmètre;Progression locale
Avez-vous terminé cette leçon ?
Votre choix reste dans votre navigateur et ne nécessite aucun compte.