OVER 키워드와 함께 사용되며 역할에 따라 다음과 같이 나뉨
- 순위 함수 : RANK, DENSE_RANK, ROW_NUMBER
- 집계 함수 : SUM, MAX, MIN, AVG, COUNT
- 행 순서 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD
- 비율 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT
순위함수
- RANK : 순위를 매기면서 같은 순위가 존재하면 존재하는 수만큼 다음 순위를 건너뛴다
- DENSE_RANK : 순위를 매기면서 같은 순위가 존재하더라도 다음 순위를 건너뛰지 않고 이어서 매긴다
- ROW_NUMBER : 순위를 매기면서 동일한 값이라도 각기 다른 순위를 부여한다
집계함수
- SUM
- MAX
- MIN
- AVG
- COUNT
윈도우 함수 사용 옵션
; WINDOWING 절을 이용하여 집계하려는 데이터의 범위를 지정할 수 있음
범위
- UNBOUNDED PRECENDING : 위쪽 끝 행
- UNBOUNDED FOLLOWING : 아래쪽 끝 행
- CURRENT ROW : 현재 행
- n PRECENDING : 현재 행에서 위로 n만큼 이동
- n FOLLOWING : 현재 행에서 아래로 n만큼 이동
기준
- ROWS : 행 자체가 기준이 된다
- RANGE : 행이 가지고 있는 데이터 값이 기준이 된다
ex)
- RANGE BETWEEN UNBOUNDED PRECENDING AND CURRENT ROW : 처음부터 현재 행까지
- RANGE BETWEEN 10 PRECENDING AND CURRENT ROW : 현재 행이 가지고 있는 값보다 10만큼 적은 행부터 현재 행까지
- ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING : 현재 행부터 끝까지
- ROWS BETWEEN CURRENT ROW AND 5 FOLLOWING : 현재 행부터 아래로 5만큼 이동한 행까지
행 순서 함수
- FIRST_VALUE : 파티션 별 가장 선두에 위치한 데이터
- LAST_VALUE : 파티션 별 가장 끝에 위치한 데이터
- LAG : 파티션 별로 특정 수만큼 앞선 데이터
- LEAD : 파티션 별로 특정 수만큼 뒤에 있는 데이터
비율 함수
- RATIO_TO_REPORT : 파티션 별 합계에서 차지하는 비율
- PERCENT_RANK : 해당 파티션의 맨 위 끝 행을 0, 맨 아래 끝 행을 1로 놓고 현재 행이 위치하는 백분위 순위 값
; (RANK - 1) / (COUNT -1) 값과 같음
- CUME_DIST : 해당 파티션에서 누적 백분율을 구하는 함수
- NTILE : 주어진 수만큼 행들을 n등분한 후 현재 행에 해당하는 등급을 구하는 함수
; 할당할 행이 남았을 경우 맨 앞의 그룹부터 하나씩 더 채워진다
'SQLD > SQL 기본 및 활용' 카테고리의 다른 글
계층 쿼리 (0) | 2023.03.14 |
---|---|
Top - N 쿼리, 셀프 조인 Self Join (0) | 2023.03.14 |
집합 연산자, 그룹 함수 (0) | 2023.03.14 |
뷰 View (0) | 2023.03.14 |
서브쿼리 Subquery (0) | 2023.03.14 |