WITH 절(공통 테이블 표현식, CTE)은 SQL에서 복잡한 쿼리를 간소화하고 가독성을 높이기 위해 사용됩니다.
이를 통해 서브쿼리를 정의하고 나중에 메인 쿼리에서 참조할 수 있습니다.
WITH 절을 사용하면 반복적으로 사용되는 서브쿼리를 한 번만 정의하여 재사용하거나, 단계적으로 쿼리를 작성할 수 있습니다.
WITH cte_name AS ( SELECT column1, column2, ... FROM table_name WHERE condition )
SELECT column1, column2, ...
FROM cte_name
WHERE condition;
WITH Sales_CTE AS ( SELECT region, SUM(sales_amount) AS total_sales FROM Sales GROUP BY region )
SELECT region, total_sales
FROM Sales_CTE
WHERE total_sales > 10000;
WITH Employee_CTE AS ( SELECT department_id, COUNT(*) AS employee_count FROM Employees GROUP BY department_id ),
Department_CTE AS ( SELECT department_id, department_name FROM Departments )
SELECT d.department_name, e.employee_count
FROM Department_CTE d JOIN Employee_CTE e ON d.department_id = e.department_id
WHERE e.employee_count > 5;
WITH RECURSIVE OrgChart AS ( SELECT employee_id, manager_id, employee_name FROM Employees WHERE manager_id IS NULL -- Top-level manager
UNION ALL
SELECT e.employee_id, e.manager_id, e.employee_name FROM Employees e INNER JOIN OrgChart o ON e.manager_id = o.employee_id )
SELECT employee_name
FROM OrgChart;
WITH FilteredOrders AS ( SELECT order_id, customer_id, order_date FROM Orders WHERE order_date >= '2024-01-01' ),
AggregatedSales AS ( SELECT customer_id, COUNT(order_id) AS total_orders FROM FilteredOrders GROUP BY customer_id )
SELECT customer_id, total_orders
FROM AggregatedSales
WHERE total_orders > 5;
| 큐브리드 sql replace 공백 구분탭 추가하는 방법 CHAR(9) (1) | 2024.11.14 |
|---|---|
| mysql distinct, group by 차이는? (1) | 2024.11.12 |
| SET GLOBAL WAIT_TIMEOUT 시간 설정 (0) | 2024.11.07 |
| 데이터베이스 SQL decode 함수 쓰는 방법 (3) | 2024.11.06 |
| 데이터베이스 SQL 조건절 where 1=1 뜻 (0) | 2024.11.05 |