DB/쿼리
(Oracle)윈도우 함수 사용법
송민준
2020. 8. 3. 23:39
자. 윈도우 함수란 무엇인가? 분석함수 중에서 윈도우절을 사용하는 함수를 뜻한다!
윈도우 함수를 사용해서 합계, 순위, 행 위치 등을 컨트롤 가능하다.
구조는 다음과 같다.
SELECT 윈도우함수(파람)
OVER(PARTITION BY 칼람 ORDER BY WINDOWING)
- 윈도우 함수 구조
1. 파람 : 윈도우 함수에 따라 0~ 여러개의 파람을 가진다.
2. PARTITION BY : 전체 집합을 기준에 의해 소그룹으로 나눔
3. ORDER BY : 정렬
4. WINDOWING : 행 기준의 범위를 정함
1) ROWS : 부분집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정
2) RANGE : 논리적인 주소에 의해 행 집합을 지정함
3) BETWEEN A AND B : A와 B 사이의 집합
4) UNBOUNDED PRECEDING : 시작 위치
5) UNBOUNDED FOLLOWING : 마지막 위치
6) CURRENT ROW : 윈도우 시작 위치가 현재 행임을 의미(각 행 위치)
예시
- 전체 합(첨부터 끝까지)
select empno, ename, sal,
sum(sal) over (
order by sal
rows between unbounded preceding and unbounded following
) TOTSAL
from emp;
- 처음부터 각 행별 합계(순차적) 반대로 current row 부터 마지막 행까지도 가능하다.
select empno, ename, sal,
sum(sal) over (
order by sal
rows between unbounded preceding and current row
) TOTSAL
from emp;
- rows가 아닌 range를 사용한다면?
select empno, ename, sal,
sum(sal) over (
order by sal
range between unbounded preceding and current row
) TOTSAL
from emp;
보이는가? 같은 값이면 미리 더한다(?)