Leçon 2 / 9 — Chapitre 8: Mise en pratique : hôtellerie
CTE : chiffre d'affaires par mois
Comme au chapitre 2, DATE_TRUNC regroupe les réservations par mois ; comme au chapitre 4, une CTE isole d'abord le revenu de chaque réservation confirmée.
WITH revenus AS (
SELECT DATE_TRUNC('month', r.date_arrivee) AS mois, r.nb_nuits * c.prix_nuit AS revenu
FROM reservations r
JOIN chambres c ON r.chambre_id = c.id
WHERE r.statut = 'confirmee'
)
SELECT mois, SUM(revenu) AS revenu_total
FROM revenus
GROUP BY mois
ORDER BY mois;
revenus calcule le revenu de chaque réservation confirmée (nb_nuits * prix_nuit), en excluant d'emblée la réservation annulée (id 4). La requête principale additionne ensuite ces revenus par mois : juin (réservations 1, 2, 3) = 150 + 160 + 750 = 1060 ; juillet (réservations 5, 6 — la 4 est exclue) = 320 + 100 = 420 ; août (réservation 7) = 240.
À retenir :
- Isoler d'abord le revenu ligne par ligne (dans la CTE), puis l'agréger par mois (dans la requête principale), décompose le calcul en deux étapes lisibles.
- Exclure les réservations annulées dès la CTE évite de les recompter par erreur dans le total mensuel.
À vous de jouer : quel est le revenu_total du mois de juillet dans ce résultat ?
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