📘 Chapitre 2 – Fonctions d’agrégation & GROUP BY
1. 🎯 Objectif pédagogique
Apprendre à utiliser les fonctions d’agrégation et la clause GROUP BY pour regrouper et analyser les données dans une base SQL.
2. 📚 Concepts abordés
- Fonctions d’agrégation :
COUNT()
,SUM()
,AVG()
,MIN()
,MAX()
- Clause
GROUP BY
pour regrouper les résultats - Clause
HAVING
pour filtrer les groupes - Différence entre
WHERE
etHAVING
- Exemple d’agrégation dans une table d’articles
3. 🧠 Explication théorique
Les fonctions d’agrégation permettent de calculer des valeurs à partir d’un ensemble de lignes (ex. total d’articles, moyenne d’un champ numérique). La clause GROUP BY regroupe les lignes selon une ou plusieurs colonnes.
WHERE
filtre avant l’agrégation.HAVING
filtre après l’agrégation.
Exemple simple :
SELECT id_utilisateur, COUNT(*) AS nb_articles
FROM Article
GROUP BY id_utilisateur
HAVING COUNT(*) > 2;
Cette requête affiche le nombre d’articles par utilisateur, uniquement pour ceux qui en ont plus de 2.
4. 🛠 Tutoriel pratique
Résumé du travail : Utiliser les fonctions d’agrégation et GROUP BY sur la table Article
.
Étape 1 : Compter le nombre d’articles
SELECT COUNT(*) AS total_articles FROM Article;
Étape 2 : Calculer la date la plus récente
SELECT MAX(date_pub) AS derniere_publication FROM Article;
Étape 3 : Compter les articles par utilisateur
SELECT id_utilisateur, COUNT(*) AS nb_articles
FROM Article
GROUP BY id_utilisateur;
Étape 4 : Filtrer avec HAVING
SELECT id_utilisateur, COUNT(*) AS nb_articles
FROM Article
GROUP BY id_utilisateur
HAVING COUNT(*) >= 3;
Étape 5 : Calculer la moyenne d’un champ
Si un champ nb_vues
existe :
SELECT AVG(nb_vues) AS moyenne_vues FROM Article;
5. 🧾 Résumé et points-clés
- Les fonctions
COUNT()
,SUM()
,AVG()
,MIN()
,MAX()
permettent des calculs globaux. GROUP BY
regroupe les résultats selon une colonne.HAVING
filtre les groupes après l’agrégation (contrairement àWHERE
).