Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

으나님의 잡다한 개발상식

(SQL) WINDOW함수 본문

SQL

(SQL) WINDOW함수

스위트치즈 2020. 5. 28. 10:48

1) WINDOW 함수란?

- 관계형 DB는 컬럼과 컬럼 간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면, 행과 행 간의 관계를 정의하거나 행과 행 간을 비교, 연산하는 것을 하나의 SQL로 처리하는 것이 매우 어렵다.

- WINDOW함수는 행과 행 간의 관계를 정의하기 위해 제공되는 함수이다.

- WINDOW함수를 통해 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.

 

2) WINDOW 함수 종류

- 그룹 내 순위함수(RANK) : RANK, DENSE_RANK, ROW_NUMBER

- 그룹 내 집계함수(AGGREGATE) : SUM, MAX, MIN, AVG, COUNT

- 그룹 내 행 순서 관련함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD

- 그룹 내 비율관련함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT

- 선형 분석을 포함한 통계 분석관련함수

 

3) WINDOW 함수 구조

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

- ARGUMENTS(인수) : WINDOW 함수에 따라서 0~N개의 인수를 설정한다.

- PARTIOTION BY : 전체 집합을 기준에 의해 소그룹으로 나눈다.

- ORDER BY : 어떤 항목에 대해서 순위를 지정할 때 사용한다.

- WINDOWING : 함수의 대상이 되는 행 기준 범위를 추가로 지정할 수 있다(PARTITION 안에서만 WINDOWING 범위 설정 가능). 

ROWS 부분집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정한다.
RANGE 논리적인 주소에 의해 행 집합을 지정한다.
BETWEEN~AND 윈도우의 시작과 끝의 위치를 지정한다.
UNBOUNDED PRECEDING PARTITION의 첫 번째 로우에서 윈도우가 시작, 현재 ROW를 기준으로 이전
UNBOUNDED FOLLOWING PARTITION의 마지막 로우에서 윈도우가 시작, 현재 ROW를 기준으로 이후
CURRENT ROW 윈도우 시작 위치이나 끝 위치가 현재 행임을 의미한다.

 

EX) 같은 부서 내에 사번 순서를 기준으로 이전 사원과 현재 사원의 급여 합계

EX)


EX)