18
Chapitre 18 sur 21

Fonctions SQL de base

Jusqu’ici, vous avez appris à lire et relier des données. Maintenant, vous allez apprendre à analyser vos données : compter, faire une moyenne, trouver un minimum/maximum, additionner… C’est indispensable pour les statistiques et tableaux de bord.

Fonctions d’agrégation : “résumer” des lignes

Les fonctions d’agrégation prennent plusieurs lignes et produisent un résultat résumé. Exemple : “combien de films ?”, “note moyenne ?”.

📊

Analogie : un tableau Excel

Pensez à Excel : vous avez une colonne de notes. Vous voulez le total, la moyenne, la plus grande valeur… SQL peut faire ça directement avec SUM, AVG, MIN, MAX, COUNT.

📖

Définition

Une fonction d’agrégation calcule une valeur à partir d’un ensemble de lignes. Souvent, on l’utilise avec GROUP BY pour faire des statistiques par groupe.

COUNT : compter des lignes

COUNT sert à compter. C’est souvent la première statistique qu’on fait : “combien d’enregistrements ?”.

-- Combien de films au total ?
SELECT COUNT(*) AS total_films
FROM films;
💡

COUNT(*) vs COUNT(colonne)

COUNT(*) compte toutes les lignes. COUNT(colonne) compte uniquement les lignes où la colonne n’est pas NULL.

MIN et MAX : trouver la plus petite / plus grande valeur

MIN retourne la plus petite valeur, MAX la plus grande. Exemple : film le plus ancien, film le plus récent, note la plus haute…

-- Note la plus haute et la plus basse
SELECT
  MIN(note) AS note_min,
  MAX(note) AS note_max
FROM films;

SUM : additionner

SUM additionne des valeurs numériques. Exemple : total de ventes, total de stock, total de points…

-- Exemple : somme des stocks (si vous avez une table produits)
SELECT SUM(stock) AS stock_total
FROM produits;
⚠️

Si la table n’existe pas

Si vous n’avez pas encore de table produits, vous pouvez simplement retenir l’idée : SUM s’applique à une colonne numérique.

AVG : calculer une moyenne

AVG calcule la moyenne d’une colonne numérique. Exemple : note moyenne des films.

-- Note moyenne des films
SELECT AVG(note) AS note_moyenne
FROM films;
🧠

Arrondir

Selon le SGBD, AVG peut retourner un nombre décimal. Plus tard, vous verrez des fonctions pour arrondir (ROUND) si besoin.

GROUP BY : faire des statistiques par groupe

Les fonctions d’agrégation deviennent vraiment utiles quand vous regroupez des lignes. Exemple : nombre de films par année.

SELECT annee, COUNT(*) AS nb_films
FROM films
GROUP BY annee
ORDER BY annee ASC;
📌

Règle importante

Quand vous utilisez GROUP BY, toutes les colonnes dans SELECT doivent être : soit dans GROUP BY, soit dans une fonction d’agrégation (COUNT, AVG, etc.).

HAVING : filtrer les groupes

WHERE filtre les lignes avant GROUP BY. HAVING filtre les groupes après GROUP BY.

-- Garder seulement les années avec au moins 2 films
SELECT annee, COUNT(*) AS nb_films
FROM films
GROUP BY annee
HAVING COUNT(*) >= 2;
🧠

Lecture simple

“Je regroupe par année, puis je ne garde que les années qui ont au moins 2 films.”

Erreurs fréquentes

Confondre WHERE et HAVING

WHERE filtre les lignes, HAVING filtre les groupes. Si vous utilisez COUNT dans la condition, vous êtes presque toujours dans HAVING.

Mettre une colonne dans SELECT sans la grouper

Exemple : SELECT titre, COUNT(*) FROM films GROUP BY annee est incorrect, car titre n’est pas dans GROUP BY et n’est pas agrégé.

Oublier ORDER BY pour lire les stats

Vos statistiques sont plus lisibles si vous triez les groupes (ORDER BY nb_films DESC, etc.).

Exercice pratique : mini statistiques

Objectif : s’entraîner sur COUNT, AVG, MIN, MAX, GROUP BY et HAVING. Adaptez selon vos tables disponibles.

1) Compter

Combien de films dans la table ?

Indice : COUNT(*)

2) Min / Max

Trouver la note la plus haute et la plus basse.

Indice : MIN(note), MAX(note)

3) Moyenne

Calculer la note moyenne des films.

Indice : AVG(note)

4) Statistique par groupe

Nombre de films par année.

Indice : GROUP BY annee

Bonus (HAVING)

Afficher uniquement les années qui ont au moins 2 films.

Indice : HAVING COUNT(*) >= 2

🧠

Auto-correction

L’important : comprendre l’ordre logique : FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT.

Récapitulatif du chapitre

Ce que vous savez faire

  • Utiliser COUNT pour compter
  • Utiliser MIN et MAX
  • Utiliser SUM pour additionner
  • Utiliser AVG pour la moyenne
  • Regrouper avec GROUP BY
  • Filtrer les groupes avec HAVING
  • Éviter les erreurs classiques (WHERE vs HAVING)

Prochain chapitre : gestion des erreurs courantes (problèmes SQL typiques + solutions).