Intermediate LevelPostgreSQL
How do Recursive CTEs perform graph and tree traversal in SQL?
❓ Interview Prompt: Explain Recursive CTEs (`WITH RECURSIVE`), Anchor Member, UNION ALL, Recursive Member, and organizational hierarchy traversal.
Recursive CTEs ('WITH RECURSIVE') allow querying hierarchical tree and graph structures (organizational charts, category trees, bill-of-materials):
2 Members:
1
Anchor Member: Base query returning initial root nodes.
2
Recursive Member: Joins the CTE with target table, executing repeatedly until returning an empty result set.
Code Implementation Example
sql
WITH RECURSIVE org_chart AS (
-- Anchor Member: Find top manager
SELECT id, name, manager_id, 1 AS depth
FROM employees WHERE manager_id IS NULL
UNION ALL
-- Recursive Member: Join sub-employees
SELECT e.id, e.name, e.manager_id, o.depth + 1
FROM employees e
JOIN org_chart o ON e.manager_id = o.id
)
SELECT * FROM org_chart ORDER BY depth;💡Traversing employee hierarchy using a WITH RECURSIVE CTE.
🎯 Interview Key Takeaway
Use WITH RECURSIVE CTEs for querying hierarchical category trees and organizational structures.
#Recursive CTE#WITH RECURSIVE#Tree Traversal#Intermediate
Back to all PostgreSQL Questions→