SQL 문법정리 : 원도우 함수(Window Function)
원도우 함수
. 원도우 함수는 행과 열 간의 관계를 정의하기 위해서 제공되는 함수이다.
. 원도우 함수를 사용해서 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.
SELECT WINDOW_FUNCTION(ARGUMENTS)
OVER (PARTITION BY 칼럼
ORDER BY WINDOWING절)
▣ 원도우 함수 구조
구조 | 설명 |
ARGUMENTS(인수) | 원도우 함수에 따라서 0~N개의 인수를 설정한다 |
PARTITION BY | 전체 집합을 기준에 의해 소그룹으로 나눈다 |
ORDER BY | 어떤 항목에 대해서 정렬한다 |
WINDOWING | - 행 기준의 범위를 정한다 - ROWS는 물리적 결과의 행 수이고 RANGE는 논리적인 값에 의한 범위이다 |
▣ WINDOWING
구조 | 설명 |
ROWS | 부분집합인 원도우 크기를 물리적 단위로 행의 집합을 지정한다 |
RANAGE | 논리적인 주소에 의해 행 집합을 지정한다 |
BETWEEN ~ AND | 원도우의 시작과 끝의 위치를 지정한다 |
UNBOUNDED PRECEDING | 원도우의 시작 위치가 첫 번째 행임을 의미한다 |
UNBOUNDED FOLLOWING | 윈도우 마지막 위치가 마지막 행임을 의미한다 |
CURRENT ROW | 윈도우 시작 위치가 현재 행임을 의미한다 |
▣ 순위 함수(RANK Function)
순위함수 | 설명 |
RANK | - 특정항목 및 파티션에 대해서 순위를 계산한다 - 동일한 순위는 동일한 값이 부여된다 |
DENSE_RANK | 동일한 순위를 하나의 건수로 계산한다 |
ROW_NUMBER | 동일한 순위에 대해서 고유의 순위를 부여한다 |
▣ 집계 함수(AGGREGATE Function)
집계 함수 | 설명 |
SUM | 파티션 별로 합계를 계산한다 |
AVG | 파티션 별로 평균을 계산한다 |
COUNT | 파티션 별로 행 수를 계산한다 |
MAX와 MIN | 파티션 별로 최댓값과 최소값을 계산한다 |
▣ 행 순서 관련 함수
행 순서 | 설명 |
FIRST_VALUE | - 파티션에서 가장 처음에 나오는 값을 구한다 - MIN 함수를 사용해서 같은 결과를 구할 수 있다 |
LAST_VALUE | - 파티션에서 가장 나중에 나오는 값을 구한다 - MAX 함수를 사용해서 같은 결과를 구할 수 있다 |
LAG | 이전 행을 가지고 온다 |
LEAD | - 원도우에서 특정 위치의 행을 가지고 온다 - 기본값은 1이다 |
▣ 비율 관련함수
비율 함수 | 설명 |
CUME_DIST | - 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대한 누적 백분율을 조회한다 - 누적 분포상에 위치를 0~1사이의 값을 가진다 |
PERCENT_RANK | 파티션에서 제일 먼저 나온 것을 0으로 제일 늦게 나온 것을 1로 하여 값이 아닌 행의 순서별 백분율을 조회한다 |
NTILE | 파티션별로 전체 건수를 ARGUMENT 값으로 N 등분한 결과를 조회한다 |
RATIO_TO_REPORT | 파티션 내에 전체 SUM(칼럼)에 대한 행 별 칼럼값의 백분율을 소수점까지 조회한다 |
'SQL' 카테고리의 다른 글
SQL 문법정리 : 테이블파티션(Table Partition) (0) | 2021.03.02 |
---|---|
SQL 문법정리 : 계층형 조회(Connect by) (0) | 2021.02.27 |
SQL 문법정리 : 내장형 함수(BUILT -IN FUNCTION) (0) | 2021.02.27 |
SQL 문법정리 : WHERE문이 사용하는 연산자, NULL 관련함수 (0) | 2021.02.26 |
SQL 문법정리 : 조건연산자(DECODE,CASE, NULLIF, CAST, WITH, 재귀 쿼리) (0) | 2021.02.26 |