SQL

WITH (CTE, Common Table Expression)

c29130811 2024. 7. 11. 14:48

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