informatique (tronc commun des prépas scientifiques) · Chapitre 16 · Application directe du cours
Premiers groupes
SQL : jointures, agrégation et requêtes imbriquées · niveau 1 (application)
Énoncé
Rédiger les requêtes SQL pour obtenir : (a) le nombre d'usagers habitant dans chaque ville ; (b) le nombre d'emprunts par jour, classés chronologiquement ; (c) pour chaque auteur (identifié par son identifiant), l'année de publication de son livre le plus récent.
Corrigé
-- (a) Nombre d'usagers par ville
SELECT ville, COUNT(*) FROM usager GROUP BY ville;
-- (b) Nombre d'emprunts par jour
SELECT jour, COUNT(*) FROM emprunt GROUP BY jour ORDER BY jour;
-- (c) Année du livre le plus récent par auteur
SELECT id_auteur, MAX(annee) FROM livre GROUP BY id_auteur;
(a) Permet de constater une répartition homogène (Lyon : 2, Nantes : 2, Paris : 2) que la table brute masquait. (b) Renvoie dix lignes avec 1 emprunt par jour, montrant qu'un GROUP BY peut générer des groupes de taille unitaire. (c) Fournit les valeurs : Verne , Austen , Tolstoï , Colette . Règle d'or : Dans la question (c), id_auteur est dans le GROUP BY et MAX(annee) est agrégé. Ajouter la colonne titre au SELECT pour connaître l'œuvre associée serait invalide, car cette colonne n'est ni groupée ni agrégée.
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é
- Agrégats sans groupe corrigé