all cheat sheets

SQL CTEs cheat sheet

WITH clauses, chained CTEs and recursive queries for readable multi-step SQL.

Basics

Single CTE
WITH completed AS (
  SELECT * FROM orders WHERE status = 'completed'
)
SELECT customer_id, COUNT(*) FROM completed GROUP BY customer_id;
Chained CTEs
WITH per_customer AS (
  SELECT customer_id, COUNT(*) AS n FROM orders GROUP BY customer_id
), top AS (
  SELECT * FROM per_customer WHERE n >= 2
)
SELECT c.name, t.n FROM top t JOIN customers c ON c.id = t.customer_id;

Recursive

Generate a series
WITH RECURSIVE nums(n) AS (
  SELECT 1 UNION ALL SELECT n + 1 FROM nums WHERE n < 10
)
SELECT n FROM nums;
Walk a hierarchy
WITH RECURSIVE chain AS (
  SELECT id, name, manager_id, 0 AS depth FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.id, e.name, e.manager_id, c.depth + 1
  FROM employees e JOIN chain c ON e.manager_id = c.id
)
SELECT * FROM chain;

Try it live

sql · editable
loading editor…

Practice it

learn sql step by step →

More cheat sheets

Ready for interview-level questions? Pro unlocks the full company problem set.