PaliSkill
SQL avancé

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