Les fonctions d'agrégat SQL sont parmi les outils les plus utilisés dans l'analyse de données. Elles permettent de résumer des milliers de lignes en une seule valeur exploitable : total des ventes, nombre de clients actifs, panier moyen… Maîtriser SUM, COUNT, AVG, MIN et MAX est indispensable pour tout entretien data analyst.
Pourtant, ces fonctions recèlent des subtilités qui font trébucher même les candidats expérimentés. Comment COUNT(*) diffère-t-il de COUNT(colonne) ? Que se passe-t-il avec les valeurs NULL ? Comment combiner plusieurs agrégats dans une même requête ?
Cet article répond à toutes ces questions avec des exemples concrets, un tableau comparatif et des cas pratiques directement issus d'entretiens réels.
📌 Ce qu'il faut retenir
- Les 5 fonctions d'agrégat fondamentales sont
SUM,COUNT,AVG,MINetMAX COUNT(*)compte toutes les lignes,COUNT(colonne)ignore les valeursNULLAVGignore automatiquement lesNULL, ce qui peut fausser une moyenne attendue- Ces fonctions s'utilisent toujours avec
GROUP BYdès qu'une colonne non agrégée est présente dans leSELECT
Pourquoi les agrégats SQL sont incontournables en entretien
Dans un entretien data analyst, plus de 80 % des questions SQL impliquent au moins une fonction d'agrégat. Les recruteurs cherchent à vérifier que vous savez non seulement écrire la syntaxe correcte, mais aussi interpréter les résultats et anticiper les comportements inattendus.
Les agrégats servent à répondre à des questions métier concrètes : quel est le chiffre d'affaires mensuel ? Combien de commandes ont été passées par chaque client ? Quel est le produit le moins cher de chaque catégorie ? Ces questions reviennent systématiquement dans les tests techniques.
En combinant les agrégats avec GROUP BY et HAVING, vous pouvez construire des analyses puissantes en quelques lignes. Pour aller plus loin sur le GROUP BY, consultez notre guide complet sur GROUP BY et HAVING en SQL.
Les 5 fonctions d'agrégat fondamentales
SUM : calculer un total
SUM additionne toutes les valeurs non nulles d'une colonne numérique.
SELECT
categorie,
SUM(montant) AS chiffre_affaires
FROM commandes
GROUP BY categorie;
Cas d'usage typique : total des ventes par région, cumul des heures travaillées par employé, somme des coûts par projet.
COUNT : compter les lignes
COUNT existe sous deux formes aux comportements bien distincts.
-- Compte toutes les lignes (incluant les NULL)
SELECT COUNT(*) FROM clients;
-- Compte uniquement les lignes où email n'est pas NULL
SELECT COUNT(email) FROM clients;
Cette différence est au cœur de nombreuses questions d'entretien. Si votre table contient 1 000 clients dont 150 sans email renseigné, COUNT(*) retourne 1 000 et COUNT(email) retourne 850.
AVG : calculer une moyenne
AVG calcule la moyenne arithmétique en ignorant les valeurs NULL.
SELECT
departement,
AVG(salaire) AS salaire_moyen
FROM employes
GROUP BY departement;
⚠️ Attention
Si une colonne contient des NULL, AVG les exclut du calcul. Une colonne avec 10 valeurs dont 3 NULL donnera une moyenne basée sur 7 valeurs, pas 10. Ce comportement peut produire des résultats différents de ce qu'on obtiendrait en remplaçant les NULL par 0 avec COALESCE.
MIN et MAX : trouver les extrêmes
MIN et MAX retournent respectivement la valeur minimale et maximale d'une colonne. Ils fonctionnent sur les types numériques, mais aussi sur les dates et les chaînes de caractères.
SELECT
categorie,
MIN(prix) AS prix_min,
MAX(prix) AS prix_max,
MAX(prix) - MIN(prix) AS ecart
FROM produits
GROUP BY categorie;
Sur des chaînes, MIN et MAX utilisent l'ordre alphabétique (ou l'ordre du jeu de caractères). C'est particulièrement utile pour trouver la première et la dernière date d'activité d'un utilisateur.
Tableau comparatif des 5 fonctions
| Fonction | Rôle | Gestion des NULL | Types compatibles | Exemple d'usage |
|---|---|---|---|---|
SUM |
Somme totale | Ignorés | Numérique | Total des ventes |
COUNT(*) |
Nombre de lignes | Comptés | Tous | Nombre de commandes |
COUNT(col) |
Nombre de valeurs non nulles | Ignorés | Tous | Clients avec email |
AVG |
Moyenne arithmétique | Ignorés | Numérique | Panier moyen |
MIN |
Valeur minimale | Ignorés | Numérique, date, texte | Prix le plus bas |
MAX |
Valeur maximale | Ignorés | Numérique, date, texte | Dernière commande |
