← SQL Intermédiaire
Leçon 9 / 9 — Chapitre 8: Mise en pratique : bibliothèque
Cas pratique : rapport d'activité de la médiathèque
Ce cas pratique de synthèse combine jointure, agrégation et HAVING pour identifier les adhérents les plus actifs.
SELECT a.nom AS adherent, COUNT(*) AS nb_emprunts
FROM emprunts e
JOIN adherents a ON e.adherent_id = a.id
GROUP BY a.nom
HAVING COUNT(*) >= 2;
Étape par étape :
- La jointure associe chaque emprunt au nom de son adhérent.
GROUP BY a.nomforme un groupe par adhérent : Amara (2, emprunts 1 et 3), Koffi (2, emprunts 2 et 5), Nadia (1, emprunt 4), Samuel (1, emprunt 6).HAVING COUNT(*) >= 2ne garde que les adhérents ayant emprunté au moins 2 livres : Amara et Koffi.
Résultat final : 2 lignes — Amara et Koffi, chacun avec 2 emprunts. Yasmin, qui n'a jamais rien emprunté, n'apparaît même pas dans la jointure de départ.
À retenir :
HAVINGfiltre les groupes après agrégation, exactement comme dans les chapitres précédents — ici appliqué à un scénario de fidélisation.- Un adhérent totalement absent de
emprunts(comme Yasmin) n'apparaît dans aucun groupe : une jointure interne ne peut agréger que ce qu'elle a d'abord réussi à relier.
À vous de jouer : le nom 'Nadia' apparaît-il dans ce résultat final ? Justifiez à partir de son nombre d'emprunts.
🔒
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès