Adloun

informatique (tronc commun des prépas scientifiques) · Chapitre 16 · Exercice de TD

Le palmarès des livres — et ses absents

SQL : jointures, agrégation et requêtes imbriquées · niveau 2

Énoncé

Établir le nombre d'emprunts pour chaque livre (titre et effectif d'emprunts), trié du plus emprunté au moins emprunté. Expliquer quels livres n'apparaissent pas dans ce tableau et proposer une méthode pour les recenser.

Corrigé

SELECT titre, COUNT(*) AS nb
FROM emprunt JOIN livre ON emprunt.id_livre = livre.id_livre
GROUP BY livre.id_livre, titre
ORDER BY nb DESC, titre;

Résultat :

Guerre et paix                   | 2
Orgueil et préjugés              | 2
Vingt mille lieues sous les mers | 2
Anna Karénine                    | 1
De la Terre à la Lune            | 1
Le Blé en herbe                  | 1
Michel Strogoff                  | 1

Le tableau obtenu comporte seulement 7 lignes alors que la base contient 8 livres. Le livre Les Vrilles de la vigne, n'ayant jamais été emprunté, ne possède aucune ligne dans la table emprunt. La jointure interne l'exclut donc totalement, masquant le fait qu'il a été emprunté 0 fois. Pour recenser les livres absents, on peut exécuter une requête d'exclusion en utilisant l'opérateur ensembliste EXCEPT :

SELECT id_livre FROM livre
EXCEPT
SELECT id_livre FROM emprunt;

Dans un rapport d'analyse de données, il convient de présenter les deux requêtes afin de ne pas masquer les éléments à effectif nul.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre