SELECT문을 통한 작업을 하다보면 결과집합의 각 행과 행의 관계에서 다양한 연산처리를 해야할 떄가 있다. (누적합계, 누적비율, 누적등수 등)
이러한 연산처리를 할 수 있게 하는 것이 바로 윈도우 함수(Window Function)이다. 분석함수라고 불리기도 한다.
윈도우 함수의 종류
순위
함수명 | 설명 |
---|---|
RANK | 지정한 기준에 따라 순위를 구하고, 동일한 순위가 있다면 건너뛰고 다음 순위로 산출한다. (1, 2, 2, 4) |
DENSE_RANK | 지정한 기준에 따라 순위를 구하고, 동일한 순위가 있다면 건너뛰지 않고 다음 순위로 산출한다. (1, 2, 2, 3) |
ROW_NUMBER | 지정한 기준에 따라 순위를 구하고, 동일 순위가 있어도 무조건 순위를 산출한다. (1, 2, 3, ,4) |
집계
함수명 | 설명 |
---|---|
SUM | 지정한 기준에 따라 합계를 구한다. |
MAX | 지정한 기준에 따라 최댓값을 구한다. |
MIN | 지정한 기준에 따라 최솟값을 구한다. |
AVG | 지정한 기준에 따라 평균값을 구한다. |
COUNT | 지정한 기준에 따라 갯수를 구한다. |
행 순서
함수명 | 설명 |
---|---|
FIRST)VALUE | 지정한 기준에 따라 가장 먼저 나오는 값을 구한다. |
LAST_VALUE | 지정한 기준에 따라 가장 나중에 나오는 값을 구한다. |
LAG | 지정한 기준에 따라 이전값을 구한다. |
LEAD | 지정한 기준에 따라 다음값을 구한다. |
그룹 내 비율
함수명 | 설명 |
---|---|
CUME_DIST | 지정한 기준에 따라 누적 백분융을 구한다. 지속적으로 누적되다가 최종행은 1이 된다. |
PERCENT_RANK | 지정한 기준에 따라 각 행의 순서별 백분율을 구한다. 제일 먼저 나오는 것을 0, 가장 늦게 나오는 것을 1로 한다. |
NTILE | 지정한 기준에 따라 특정 값으로 N등분한 결과를 구한다. |
RATIO_TO_REPORT | 지정한 기준에 따라 각 행이 차지하는 비율을 나타낸다. |
윈도우 함수 문법
윈도우 함수는 SELECT 절에서 사용되며, 기본적인 문법은 아래와 같다.
인자는 윈도우 함수에 따라 객수가 달라질 수 있다.
OVER문 안의 PARTITION BY
는 집계를 내는, 또는 등수를 매기는 컬럼을 그룹화하는 속성이고, ORDER BY
는 정렬 기준을 기재하는 속성이다. 등수를 매기는 윈도우 함수의 경우 ORDER BY의 내용에 따라 등수를 매기는 기준이 정해진다.
윈도우절은 윈도우 함수가 연산을 처리하는 대상이 되는 행의 범위를 지정하는 절이다. 만약, 전체 결과집합의 연산을 하고싶다면 윈도우절을 사용하지 않아도 되지만, 특정 행의 범위를 지정하고 싶다면 윈도우 절 부분에 아래와 같이 작성해야한다.