Window Functions
-- Rank results
SELECT name, department, salary,
rank() OVER (PARTITION BY department
ORDER BY salary DESC)
FROM employees;
-- Running totals
SELECT date, amount,
sum(amount) OVER (ORDER BY date)
FROM transactions;
Common Table Expressions (CTE)
WITH RECURSIVE subordinates AS (
-- Base case
SELECT employee_id, manager_id, name
FROM employees
WHERE manager_id = 1
UNION ALL
-- Recursive case
SELECT e.employee_id, e.manager_id, e.name
FROM employees e
INNER JOIN subordinates s ON s.employee_id = e.manager_id
)
SELECT * FROM subordinates;