code

Oracle의 OVER 절

codestyles 2020. 11. 11. 20:12
반응형

Oracle의 OVER 절


Oracle에서 OVER 절의 의미는 무엇입니까?


OVER 절은 분석 함수가 작동하는 분할, 순서 및 기간을 지정합니다.

예를 들어 다음은 이동 평균을 계산합니다.

AVG(amt) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)

date   amt   avg_amt
=====  ====  =======
1-Jan  10.0  10.5
2-Jan  11.0  17.0
3-Jan  30.0  17.0
4-Jan  10.0  18.0
5-Jan  14.0  12.0

날짜순으로 행 위의 이동 창 (3 행 너비)에서 작동합니다.

이것은 실행 균형을 계산합니다.

SUM(amt) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

date   amt   sum_amt
=====  ====  =======
1-Jan  10.0  10.0
2-Jan  11.0  21.0
3-Jan  30.0  51.0
4-Jan  10.0  61.0
5-Jan  14.0  75.0

현재 행과 모든 이전 행을 포함하는 창에서 작동합니다.

각 "부서"에 대해 개별적으로 최대 값을 계산합니다.

MAX(amt) OVER (PARTITION BY dept)

dept  amt   max_amt
====  ====  =======
ACCT   5.0   7.0
ACCT   7.0   7.0
ACCT   6.0   7.0
MRKT  10.0  11.0
MRKT  11.0  11.0
SLES   2.0   2.0

특정 부서의 모든 행을 포함하는 창에서 작동합니다.

SQL Fiddle : http://sqlfiddle.com/#!4/9eecb7d/122


이를 사용하여 일부 집계 함수를 분석으로 변환 할 수 있습니다.

SELECT  MAX(date)
FROM    mytable

1최대 값이 하나 인 행을 반환 합니다.

SELECT  MAX(date) OVER (ORDER BY id)
FROM    mytable

최대 실행중인 모든 행을 반환합니다.


It's part of the Oracle analytic functions.

참고URL : https://stackoverflow.com/questions/1092120/over-clause-in-oracle

반응형