WITH
로 시작하여 CTE Body
까지가 CTE입니다.AS()
안의 쿼리에 따라 engineers
라는 이름의 결과 집합이 일시적으로 생성됩니다.engineers
는 CTE Usage 부분의 FROM
절 등에서 사용 가능합니다.
WITH 가상테이블명
AS ( SELECT 쿼리
UNION ALL
SELECT 쿼리 )
-- 예시
WITH cte_film
AS (SELECT film_id,
title,
( CASE
WHEN length < 30 THEN 'Short'
WHEN length < 90 THEN 'Medium'
ELSE 'Long'
END ) length
FROM film)
SELECT film_id,
title,
length
FROM cte_film
WHERE length = 'Long'
ORDER BY title;
WITH
가상1 AS ( 서브쿼리문 ),
가상2 AS ( 서브쿼리문 )
-- 실제 사용
SELECT 컬럼, [컬럼, ...] FROM 가상1, 가상2
분석함수([칼럼]) OVER(PARTITION BY 칼럼1, 칼럼2... [ORDER BY 절] [WINDOWING 절])
SUM(SAL)
분석함수 SUM을 사용했고 SAL 칼럼에 대한 행들이 행 그룹입니다.
OVER
분석절이라고 합니다. 분석함수에 대한 조절을 OVER절 안에서 합니다.
PARTITION BY
GROUP BY와 동일하게 그룹지어 결과를 출력 합니다.
ORDER BY
PARTITION BY로 정의된 WINDOW 내에서 행들의 정렬순서를 정의해줍니다.
구분 | 분석함수 |
---|---|
집계 | COUNT, MAX, MIN, SUM, AVG |
순위 | ROW_NUMBER, RANK, DENSE_RANK |
순서 | FIRST_VALUE, LAST_VALUE, LAG, LEAD |
통계 | STDDEV, VARIANCE |
비율 | RATIO_TO_REPORT, CUME_DIST, PERCENT_RANK, NTITLE |