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 : 현재 행의 값부터 끝까지 포함