CTE (WITH)
PostgreSQL 🟡 MidDéfinition
Common Table Expression : sous-requête nommée définie avec WITH, utilisable comme une table temporaire dans la requête principale. Peut être recursive pour les hiérarchies.
Analogie
Définir une variable intermédiaire dans un calcul complexe pour le rendre lisible étape par étape.
Exemple de code
WITH active_users AS (
SELECT * FROM users WHERE status = 'active'
)
SELECT a.name, COUNT(o.id) as orders
FROM active_users a
JOIN orders o ON a.id = o.user_id
GROUP BY a.name;
Cas d'usage
Décomposer des requêtes complexes en étapes lisibles, ou parcourir des structures arborescentes avec CTE recursive.
Termes liés
En entretien
Explique-moi ce qu'est une CTE et à quoi sert le mot-clé WITH.
Une CTE est une sous-requête nommée définie avec WITH, utilisable comme une table temporaire dans la requête principale. Elle sert à décomposer des requêtes complexes en étapes lisibles.
Quand utiliserais-tu une CTE récursive ?
Pour parcourir des structures arborescentes, comme une hiérarchie. C'est justement l'un des usages cités pour les CTE, qui peuvent être récursives dans ce but.
Fiche mise à jour le 2026-09-27