sqlintermediate
Self Join for Hierarchical Data
Use a self join to query hierarchical relationships like org charts.
sqlPress ⌘/Ctrl + Shift + C to copy
-- Employee-manager hierarchy
SELECT
e.employee_id,
e.first_name AS employee,
m.first_name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.employee_id
ORDER BY m.first_name, e.first_name;
-- Find all reports (direct + indirect) using recursive CTE
WITH RECURSIVE org_tree AS (
SELECT employee_id, first_name, manager_id, 1 AS depth
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT e.employee_id, e.first_name, e.manager_id, ot.depth + 1
FROM employees e
JOIN org_tree ot ON e.manager_id = ot.employee_id
)
SELECT * FROM org_tree ORDER BY depth, first_name;Use Cases
- Org chart queries
- Category trees
- Reporting hierarchies
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
sqladvanced
Recursive CTE for Hierarchical Data
Query hierarchical data like org charts, categories, and file trees using recursive CTEs.
Best for: Querying organizational hierarchies
#sql#cte
sqlintermediate
SQL Pivot and Crosstab Queries
Transform row data into columnar reports using CASE expressions, FILTER, and crosstab patterns.
Best for: Creating monthly revenue reports
#sql#pivot
sqlintermediate
SQL Upsert and Merge Patterns
Insert or update records atomically using ON CONFLICT, MERGE, and database-specific upsert syntax.
Best for: Syncing data from external sources
#sql#upsert
sqladvanced
SQL Index Strategy Patterns
Create effective indexes including composite, partial, covering, and expression-based indexes.
Best for: Optimizing slow database queries
#sql#indexes