1. 윈도우 함수(WINDOW FUNCTION) 개요
- 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수이다.
1-1. 윈도우 함수의 특징
- OVER 문구가 키워드로 필수 포함된다.
- 서브쿼리에서 사용 가능하지만 중첩해서 사용은 불가능하다.
1-2. 윈도우 함수의 구조
- ARGUMENTS (인수) : 함수에 따라 0 ~ N개의 인수가 지정될 수 있다.
- PARTITION BY 절 : 전체 집합을 기준에 의해 소그룹으로 나눌 수 있다.
- ORDER BY 절 : 어떤 항목에 대해 순위를 지정할 지 ORDER BY 절을 기술한다.
- WINDOWING 절 : WINDOWING 절은 함수의 대상이 되는 행 기준의 범위를 지정할 수 있다.
- ROWS는 물리적인 결과 행의 수
- RANGE는 논리적인 값에 의한 범위
SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ( [PARTITION BY 칼럼] [ORDER BY 절] [WINDOWING 절] ) FROM 테이블 명;
2. 윈도우 함수의 종류
2-1. 순위 함수
- RANK : 동일한 값 대해서는 동일한 순위를 부여한다.
- DENSE_RANK : 동일한 순위를 하나의 건수로 순위를 부여한다.
- ROW_NUMBER : 동일한 값이라도 고유한 순위를 부여한다.
2-2. 일반 집계 함수
- SUM : 파티션별 윈도우의 합을 구하는 함수
- MAX : 파티션별 윈도우의 최대값을 구하는 함수
- MIN : 파티션별 윈도우의 최소값을 구하는 함수
- AVG : 파티션별 윈도우의 평균값을 구하는 함수
- COUNT : 파티션별 윈도우의 건수를 구하는 함수
2-3. 행 순서 함수
- FIRST_VALUE : 파티션별 윈도우의 최초로 나온 값을 구하는 함수이며, MIN 함수를 활용하여 같은 결과를 얻을 수도 있다.
- LAST_VALUE : 파티션별 가장 마지막에 나온 값을 구하는 함수이며, MAX 함수를 활용하여 같은 결과를 얻을 수도 있다.
- LAG : 이전 몇 번째 행의 값을 구하는 함수
- LEAD : 이후 몇 번째 행의 값을 구하는 함수
2-4. 비율 함수
- RATIO_TO_REPORT : SUM(칼럼)값에 대한 행별 칼럼 값의 백분율을 소수점으로 구하는 함수
- PERCENT_RANK : 행의 순서별 백분율을 구하는 함수
- CUME_DIST : 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율을 구하는 함수
- NTILE : 전체 건수를 ARGUMENT 값으로 N 등분한 결과값을 구하는 함수