Adloun

Premiers groupes

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 16 — SQL : jointures, agrégation et requêtes imbriquées

É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.

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.