🛠️ SQL 윈도우 함수
- 행과 행 간의 관계 정의를 위해 제공되는 함수
- 순위, 합계, 평균, 행 위치를 조작
- GROUP BY 구문과 사용 불가
- 결과 건수가 줄어들지 않음
- 집계 윈도우 함수를 사용 시 윈도우 절과 함께 사용하면 집계 대상 레코트의 범위 지정 가능
WINDOWING
- ROWS : 부분집합인 윈도우 크기를 물리적 단위로 행의 집합 지정
- RANGE : 논리적 주소에 의해 행 집합을 지정
- BETWEEN ~AND : 윈도우의 시작과 끝의 위치를 지정
- UNDOUNDED PRECEDING : 윈도우의 시작 위치가 첫 번째 행
- UNBOUNDED FOLLOWING : 윈도우의 마지막 위치가 마지막 행
- CURRENT ROW : 윈도우의 시작 위치가 현재 행
WINDOW FUNCTION
SELECT WINDOW_FUNCTION (ARGUMENTS) OVER([PARTITION BY 컬럼] [ORDER BY 컬럼] [WINDOWING 절])
FROM 테이블명;
✔️순위 함수
순위함수 | 기능 |
---|
RANK | 특정 컬럼의 순위, 동일값에 같은 순위 부여, 중간 순위 생략 |
DENSE_RANK | 동일값에 같은 순위 부여, 중간순위 비우지 않음 |
ROW_NUMBER | 동일한 값이어도 고유한 순위 부여 |
✔️일반 집계 함수
집계함수 | 기능 |
---|
COUNT | 특정 열 값의 갯수, 행의 갯수 |
MAX | 특정 열 값 중 최댓값 |
MIN | 특정 열 값 중 최솟값 |
SUM | 특정 열 값의 합계 |
AVG | 특정 열 값의 평균 |
✔️행 순서 함수
행 순서 함수 | 기능 |
---|
FIRST_VALUE | 파티션별 윈도우에서 가장 먼저 나온 값을 구함(MIN과 결과 동일) |
LAST_VALUE | 파티션별 윈도우에서 가장 마지막에 나온 값을 구함(MAX과 결과 동일) |
LAG | 이전 몇 번째 행의 값을 가져오는 함수 |
LEAD | 이후 몇 번째 행의 값을 가져오는 함수 |
✔️비율 함수
비율 함수 | 기능 |
---|
RATIO_TO_REPORT | 파티션 내 전체 SUM값에 대한 행별 컬럼 값의 백분율 |
PERCENT_RANK | 파티션별 가장 먼저 나오는 값을 0, 가장 마지막을 1로 해서 행 순서별 백분율 |
CUME_DIST | 파티션별 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율 |
NTILE | 파티션별 전체 건수를 ARGUMENT값으로 N등분한 결과를 출력 |