으나님의 잡다한 개발상식
(SQL) WINDOW함수 본문
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)
|
'SQL' 카테고리의 다른 글
(SQL) WINDOW 함수 - AGGREGATE(집계함수) (0) | 2020.05.28 |
---|---|
(SQL) WINDOW 함수 - RANK(순위함수) (0) | 2020.05.28 |
(SQL) 그룹함수(ROLLUP, GROUPING, GROUPING SETS, CUBE) (0) | 2020.05.27 |
(SQL) 서브쿼리 종류 (2) | 2020.05.27 |
(SQL) 다중 행 SUBQUERY 비교 연산자 (0) | 2020.05.27 |