Le tableau de bord de la médiathèque
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 16 — SQL : jointures, agrégation et requêtes imbriquées
Énoncé
Fournir un rapport d'activité de la médiathèque en 5 requêtes SQL distinctes répondant aux indicateurs suivants : (1) Volume : nombre d'emprunts réalisés en octobre 2025. (2) Palmarès : les 3 livres les plus empruntés (toutes périodes confondues), en mentionnant le titre et le nom de l'auteur. (3) Fidélité : les usagers ayant fait strictement plus d'emprunts que la moyenne des emprunts par emprunteur. (4) Alerte : la liste des identifiants des livres n'ayant jamais été empruntés. (5) Démographie : le nombre d'emprunteurs distincts par ville.
Corrigé
-- (1) Volume d'octobre 2025
SELECT COUNT(*) FROM emprunt WHERE jour >= '2025-10-01'; -- Renvoie 5
-- (2) Top 3 des livres les plus empruntés
SELECT titre, nom, COUNT(*) AS nb
FROM emprunt
JOIN livre ON emprunt.id_livre = livre.id_livre
JOIN auteur ON livre.id_auteur = auteur.id_auteur
GROUP BY livre.id_livre, titre, nom
ORDER BY nb DESC, titre LIMIT 3;
-- (3) Usagers au-dessus de la moyenne (moyenne = 10 emprunts / 5 emprunteurs = 2)
SELECT nom, COUNT(*) AS nb
FROM emprunt JOIN usager ON emprunt.id_usager = usager.id_usager
GROUP BY usager.id_usager, nom
HAVING COUNT(*) > 2.0;
-- (4) Livres n'ayant jamais été empruntés
SELECT id_livre FROM livre
EXCEPT
SELECT id_livre FROM emprunt;
-- (5) Nombre d'emprunteurs distincts par ville
SELECT ville, COUNT(DISTINCT emprunt.id_usager) AS emprunteurs
FROM usager JOIN emprunt ON emprunt.id_usager = usager.id_usager
GROUP BY ville;
- (1) Exploite la structure ordonnée des dates textuelles.
- (2) Utilise un tri secondaire par titre pour lever de manière déterministe les ex æquo sur le podium.
- (3) Le seuil () est calculé en faisant le ratio du nombre total d'emprunts par le nombre d'usagers actifs (les usagers ayant au moins un emprunt).
- (4) Repose sur l'opérateur ensembliste de différence
EXCEPT. - (5) Calcule le nombre d'usagers uniques via
COUNT(DISTINCT ...). Notons que les villes sans aucun emprunteur actif ne figureront pas dans le résultat à cause de la jointure interne.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.