Skip to content
SQL

CTE

공통 테이블 표현식.

#cte#with

Code

sql
-- Basic CTE
WITH active_users AS (
    SELECT id, name FROM users WHERE active = true
),
recent_orders AS (
    SELECT user_id, COUNT(*) AS order_count
    FROM orders
    WHERE order_date >= '2024-01-01'
    GROUP BY user_id
)
SELECT au.name, COALESCE(ro.order_count, 0) AS orders
FROM active_users au
LEFT JOIN recent_orders ro ON au.id = ro.user_id
ORDER BY orders DESC;

-- Multiple CTE references
WITH base AS (
    SELECT dept, salary FROM employees
),
stats AS (
    SELECT dept, AVG(salary) AS avg_sal FROM base GROUP BY dept
)
SELECT * FROM stats WHERE avg_sal > 50000;