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 |