본문 바로가기

Oracle DB

윈도우 함수

 

함수 구분

함수

설명

비고

순위

RANK

순위

1,2,2,4,5

DENSE_RANK

동일 순위를 1건으로

1,2,2,3,4

ROW_NUMBER

동일 순위 미 인정

1,2,3,4,5

집계

SUM, MAX, MIN, AVG, COUNT

합계, 최대, 최소, 평균, 건수

 

행 순서

FIRST_VALUE, LAST_VALUE

파티션 내 첫 번쨰, 최종 값

 

LAG, LEAD

이전 레코드, 이후 레코드 값

 

비율

CUME_DIST

파티션 내 데이터 값에 대한 누적 비율

결과 값 0~1 사이

PERCENT_RANK

파티션 내의 row 개수에 대한 누적 비율

RATIO_TO_REPORT

파티션 내의 비율

NTILE

인자 값으로 전체 로우 개수를 나누고, 인자 값의 순서를 결정

ntile(4) over(order by sal) sal 컬럼 순으로 정렬후 전체 로우를 4등분 후 1~4 값 설정

 

- 윈도우 함수 사용법

1) BETWEEN 사용 시

ROWS

BETWEEN

UNBOUNDED PRECEDING (맨위)

AND

CURRENT ROW

 

10 PRECEDING (10개전)

UNBOUNDED FOLLOWING

 

RANGE

 

CURRENT ROW (지금)

10 FOLLOWING

 

2)BETWEEN 미 사용 -> 현재 행 기준으로!

ROWS

UNBOUNDED PRECEDING

 

10 PRECEDING

 

CURRENT ROW

 

RANGE

 

UNBOUNDED FOLLOWING

 

10 FOLLOWING

 

 

 

ex) Select 일련번호, 측정값,

last_value(상태코드) over (partition by 부서 order by 상태코드 rows between

unbounded preceding and current row) 상태코드

from 장비측정 order by 부서, 일련번호;