송민준의 개발노트

(Oracle)윈도우 함수 사용법 본문

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;

보이는가? 같은 값이면 미리 더한다(?)

'DB > 쿼리' 카테고리의 다른 글

oracle 개행 넣기  (0) 2020.08.05
(oracle) 다른 테이블 값 참조해서 update 해주기  (0) 2020.08.04
그룹 함수  (0) 2020.08.03
(Oracle)서브쿼리(Subquery)란 무엇인가??  (0) 2020.07.27
DECODE, CASE문  (0) 2020.07.25