WITH 는 반복적인 내용을 쓸때 쓰기 좋은, 가상 테이블로 쿼리가 실행되는 동안에만 존재하는 임시 결과의 집합이라함.
-- with 절로 가상 테이블 생성
WITH cte_name AS (
SELECT column1, column2, ...
FROM table_name
WHERE condition
)
-- 메인 쿼리
SELECT column1, column2, ...
FROM cte_name
WHERE condition;
봐도 어려운데..
employee 테이블에서 이름이 중복인 전체 개수를 구한다고 친다면,
-- 이름별로 직원 수를 계산하는 CTE 정의
WITH name_counts AS (
SELECT employee_name, COUNT(*) AS name_count
FROM employees
GROUP BY employee_name
)
-- 이름별로 2명 이상인 직원 수를 세는 메인 쿼리
SELECT COUNT(*)
FROM name_counts
WHERE name_count > 1;
요런 식이 되겠다.
물론 sub query도 되겠지만 with 절이 좀 더 깔끔해 보임
728x90
'SQL' 카테고리의 다른 글
INSERT INTO SELECT (1) | 2021.06.06 |
---|---|
INSERT INTO ... VALUES (0) | 2021.05.30 |
sub query (0) | 2021.05.27 |
CHAR_LENGTH (0) | 2021.05.24 |
DISTINCT (0) | 2021.05.23 |