본문 바로가기

공부/SQL

윈도우 함수

반응형

1. 윈도우 함수

행과 행 간의 관계를 정의하기 위해서 제공되는 함수

순위, 합계, 평균, 행 위치 등을 조작할 수 있음

SELECT WINDOW_FUNCTION(ARGUMENTS)
	OVER (PARTITION BY 칼럼
    	ORDER BY WINDOWING절)
FROM 테이블명;

- 윈도우 함수 구조

구조 설명
ARGUMENTS(인수) 윈도우 함수에 따라서 0~N개의 인수를 설정한다.
PARTITION BY 전체 집합을 기준에 의해 소그룹으로 나눈다.
ORDER BY 어떤 항목에 대해서 정렬한다.
WINDOWING - 행 기준의 범위를 정한다.
- ROWS는 물리적 결과의 행 수이고 RANGE는 논리적인 값에 의한 범위이다.

- WINDOWING

구조 설명
ROWS 부분집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정한다.
RANGE 논리적인 주소에 의해 행 집합을 지정한다.
BETWEEN~AND 윈도우의 시작과 끝의 위치를 지정한다.
UNBOUNED PRECEDING 윈도우의 시작 위치가 첫 번째 행임을 의미한다.
UNBOUNDED FOLLOWING 윈도우 마지막 위치가 마지막 행임을 의미한다.
CURRENT ROW 윈도우 시작 위치가 현재 행임을 의미한다.

예시

SELECT EMPNO, ENAME, SAL
SUM(SAL) OVER(ORDER BY SAL
			ROWS BETWEEN UNBOUNDED PRECEDING
              AND UNBOUNDED FOLLOWING) TOTSAL
FROM EMP;

 

2. 순위 함수

순위 함수 설명
RANK 동일한 순위는 동일한 값이 부여된다.
DENSE_RANK 동일한 순위를 하나의 건수로 계산한다.
ROW_NUMBER 동일한 순위에 대해서 고유의 순위를 부여한다.
SELECT ENAME, SAL,
	RANK() OVER (ORDER BY SAL DESC) ALL RANK,
    RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC)
    JOB_RANK
FROM EMP;

 

3. 집계 함수

집계 함수 설명
SUM 파티션 별로 합계를 계산한다.
AVG 파티션 별로 평균을 계산한다.
COUNT 파티션 별로 행 수를 계산한다.
MAX와 MIN 파티션 별로 최댓값과 최솟값을 계산한다.

 

반응형