informatique (tronc commun des prépas scientifiques) · Chapitre 16 · Application directe du cours
Agrégats sans groupe
SQL : jointures, agrégation et requêtes imbriquées · niveau 1 (application)
Énoncé
Calculer à l'aide d'une requête SQL distincte : (a) le nombre total d'usagers ; (b) le nombre d'emprunts effectués en octobre 2025 ; (c) l'année de parution moyenne des livres de Jules Verne ; (d) le nombre de pages du plus gros livre emprunté en septembre 2025.
Corrigé
-- (a) Nombre d'usagers
SELECT COUNT(*) FROM usager; -- Renvoie 6
-- (b) Nombre d'emprunts d'octobre
SELECT COUNT(*) FROM emprunt WHERE jour >= '2025-10-01'; -- Renvoie 5
-- (c) Année moyenne de parution pour Verne (id_auteur = 1)
SELECT AVG(annee) FROM livre WHERE id_auteur = 1; -- Renvoie 1870.33...
-- (d) Nombre de pages du plus grand livre emprunté en septembre
SELECT MAX(pages) FROM emprunt
JOIN livre ON emprunt.id_livre = livre.id_livre
WHERE jour <= '2025-09-30'; -- Renvoie 1536
Pour la question (b), le format des dates AAAA-MM-JJ permet d'écrire une simple comparaison de chaînes de caractères. Pour la question (d), la requête combine une jointure (pour récupérer la colonne pages), un filtre temporel sur septembre (les jours inférieurs ou égaux au 30 septembre) et la fonction d'agrégation MAX. Vérification : En septembre, les livres empruntés sont les identifiants (soit des nombres de pages respectifs de ). Le maximum est bien .
Exercices semblables
- Le palmarès des villes corrigé
- La moyenne des moyennes n'est pas la moyenne corrigé
- Le tableau de bord de la médiathèque corrigé
- Jointures de base corrigé
- Premiers groupes corrigé