[Oracle] WINDOWING 절, ROW, RANGE

|
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW -- 첫번째행 ~ 현재행

ROWS BETWEEN 4 PRECEDING AND CURRENT ROW	-- 이전 행 4개 ~ 현재행

ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING	-- 첫번째 행 ~ 이전행 1번째

RANGE BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING -- 동작X

ROWS BETWEEN UNBOUNDED PRECEDING AND (CURRENT ROW - 1) -- 동작X

[WINDOW 함수]

- 행과 행 간의 관계를 정의하고, 행과 행을 비교, 연산하는 것을 도와주는 함수

SELECT 
	
	...
    SUM( -- sum 대신 avg 가 들어갈 수 있다.
    	... 
    ) OVER (
    	[PARTITION BY 컬럼]
        , [ORDER BY 절]
        , [WINDOWING 절]
    )
FROM 테이블명;

 

[WINDOWING절]

- ROWS

  > 개별 행(row)을 기준으로 범위를 지정

 

- RANGE

  > 행이 가지고 있는 값을 기준으로 범위를 지정

 

- CURRENT ROW

  > 현재 행

 

- UNBOUNDED PRECEDING

  > 첫번째 행

 

- UNBOUNDED FOLLOWING

  > 마지막 행

 

- 1 PRECEDING

  > 이전행에서 1개까지 선택

 

- 2 FOLLOWING

  > 다음행에서 2개까지 선택

 

-- 예시
...
) OVER (
    PARTITION BY
        ...
    ORDER BY 

        INSERT_DT	-- 기준 컬럼

        ROWS BETWEEN	-- ROWS 기준 범위 설정
            UNBOUNDED PRECEDING	-- 첫번째 행부터
        AND
            1 PRECEDING	-- 1번째 이전행까지
)

 

 

* 참고사이트

https://gent.tistory.com/473
https://www.dba-oracle.com/t_advanced_sql_windowing_clause.htm

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] ROWNUM  (0) 2023.11.29
[Oracle] ORA-01476 제수가 0 입니다  (0) 2023.11.28
xml 파일에서  (0) 2023.11.21
조건에 대한 테이블 검색  (1) 2023.11.14
[Oracle] DB 세션 kill 관련  (0) 2023.11.14
And