← SQL avancé
Leçon 9 / 9 — Chapitre 8: Mise en pratique : hôtellerie
Cas pratique de synthèse : tableau de bord hôtelier
Ce cas pratique de synthèse combine ROLLUP, jointure et deux mesures agrégées — les notions de ce chapitre.
SELECT c.type, COUNT(*) AS nb_reservations, SUM(r.nb_nuits * c.prix_nuit) AS revenu
FROM reservations r
JOIN chambres c ON r.chambre_id = c.id
WHERE r.statut = 'confirmee'
GROUP BY ROLLUP (c.type)
ORDER BY c.type;
Étape par étape :
- La jointure et le filtre
WHERE r.statut = 'confirmee'gardent les 6 réservations confirmées. GROUP BY ROLLUP (c.type)forme 3 groupes détaillés (simple : 2 réservations, 250 de revenu ; double : 3 réservations, 720 ; suite : 1 réservation, 750), plus une ligne de total général (6 réservations, 1720 de revenu).- Le type suite, avec une seule réservation, génère presque autant de revenu que le type double avec 3 réservations — un déséquilibre que le simple
COUNTne révélerait pas seul.
À retenir :
- Combiner plusieurs mesures (
COUNTetSUM) dans un mêmeROLLUPrévèle des déséquilibres qu'une seule mesure isolée masquerait. - Ce rapport de synthèse réutilise, dans une seule requête, la jointure de la leçon 2, le
ROLLUPde la leçon 3, et l'esprit du comptage conditionnel de la leçon 4.
À vous de jouer : la ligne de total général de ce résultat a-t-elle bien nb_reservations = 6 ?
🔒
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès