📘 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 et HAVING
  • 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).