CTEs use WITH to name a subquery and reuse it in the main query. They break complex queries into readable named steps. Recursive CTEs traverse tree-shaped data like category hierarchies and org charts.
Common Table Expressions
WITH high_spenders AS (
SELECT user_id, SUM(total) AS spent
FROM orders
GROUP BY user_id
HAVING SUM(total) > 1000
)
SELECT u.name, hs.spent
FROM users u
JOIN high_spenders hs ON u.id = hs.user_id
ORDER BY hs.spent DESC;
CTEs make complex queries readable by naming intermediate steps.