← SQL avancé
Leçon 7 / 9 — Chapitre 8: Mise en pratique : hôtellerie
STRING_AGG : chambres réservées par mois
Comme au chapitre 1, STRING_AGG assemble en une seule chaîne les valeurs d'un groupe — ici, les numéros de chambre réservés chaque mois.
SELECT DATE_TRUNC('month', r.date_arrivee) AS mois,
STRING_AGG(c.numero::text, ', ' ORDER BY r.id) AS chambres_reservees
FROM reservations r
JOIN chambres c ON r.chambre_id = c.id
WHERE r.statut = 'confirmee'
GROUP BY DATE_TRUNC('month', r.date_arrivee)
ORDER BY mois;
c.numero::text convertit le numéro de chambre (un nombre) en texte, condition nécessaire pour l'assembler avec STRING_AGG. Pour juillet (réservations 5 et 6, la 4 étant exclue) : '201, 102'. Pour août (réservation 7 seule) : '202'.
À retenir :
STRING_AGGaccepte une conversion (::text) sur une colonne non-texte, comme n'importe quelle expression.ORDER BY r.idà l'intérieur deSTRING_AGGgarantit un ordre reproductible dans la chaîne assemblée.
À vous de jouer : quelle est la valeur de chambres_reservees pour le mois d'août ?
🔒
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