PaliSkill
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_AGG accepte une conversion (::text) sur une colonne non-texte, comme n'importe quelle expression.
  • ORDER BY r.id à l'intérieur de STRING_AGG garantit 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