Database/SQL

[SQLD] 윈도우 함수 (Window Function)

서리★ 2024. 5. 15. 21:22

윈도우 함수는 OVER 절에 PARTITION BY 구문을 이용하여 집계의 대상이 되는 레코드의 범위를 지정할 수 있음

윈도우 함수 처리로 결과 건수는 줄어들지 않는다. 결과가 나오고 처리하기 때문에 건수는 그대로다.

 

*순위 함수

1. RANK : 1, 2, 2, 4, 5, 6

- 순위를 뛰어넘음

2. DENSE_RANK : 1, 2, 2, 3, 4, 5

- 순위를 뛰어넘지 않음

3. ROW_NUMBER : 1, 2, 3, 4, 5, 6 

- 동일한 값이더라도 다른 순위 부여

4. RATIO_TO_REPORT(컬럼) OVER(PARTITION BY 컬럼)

- 그룹 내에서 차지하는 비율

5. NTILE(숫자) OVER(ORDER BY 컬럼)

- 정렬 후 숫자만큼 그룹을 균등하게 나눈다.

 

*윈도우 프레임 지정

ROW : 행 기준

RANGE : 데이터 기준

 

RANGE BETWEEN <start> AND <end>

<n> PRECEDING : 현재 행의 값보다 'n' 이전의 값까지 포함

CURRENT ROW : 현재 행의 값을 포함

<n> FOLLOWING : 현재 행의 값보다 'n' 이후의 값까지 포함

UNBOUNDED PRECEDING : 처음부터 현재 행의 값까지 포함

UNBOUNDED FOLLWING : 현재 행의 값부터 끝까지 포함