not set

Analytic Function 본문

Database/query

Analytic Function

다크곰 2010. 12. 3. 11:30
COUNT(*) OVER () : 전체행 카운트

COUNT(*) OVER (PARTITION BY 컬럼) : 그룹단위로 나누어 카운트


MAX(컬럼) OVER() : 전체행 중에 최고값


MAX(컬럼) OVER(PARTITION BY 컬럼) : 그룹내 최고값


MIN(컬럼) OVER () : 전체행 중에 최소값


MIN(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 최소값


SUM(컬럼) OVER () : 전체행 합


SUM(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 합


AVG(컬럼) OVER () : 전체행 평균


AVG(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 평균


STDDEV(컬럼) OVER () : 전체행 표준편차


STDDEV(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 표준편차


RATIO_TO_REPORT(컬럼) OVER () : 현재행값/SUM(전체행값) 퍼센테이지로 나타낼경우 100곱하면 됩니다.


RATIO_TO_REPORT(컬럼) OVER (PARTITION BY 컬럼) : 현재행값 / SUM(그룹행값) 퍼센테이지로 나타낼경우 100곱하면 됩니다.

# OVER analytic_clause
해당 함수가 쿼리 결과 집합에 대해 적용되라는 지시어로써 FROM, WHERE, GROUP BY와 
HAVING구 이후에 계산되어 진다. 
SELECT 구 또는 ORDER BY 구에 Analytic Function을 사용할 수 있다.

- PARTITION BY 구 
하나 이상의 컬럼 또는 적합한 표현식이 사용될 수 있고 하나 이상의 컬럼 또는 
표현식에 의한 그룹으로 쿼리의 결과를 파티션한다. 
이 구가 생략되면 단일 그룹처럼 쿼리 결과 집합이 처리된다.

- ORDER BY 구
하나 이상의 컬럼 또는 적합한 표현식이 사용될 수 있고 
하나 이상의 컬럼 또는 표현식을 기준으로 파티션 내의 데이터를 정렬한다. 
표현식은 컬럼의 별칭 또는 위치를 나타내는 숫자를 사용할 수 없다.

그리고.. PARTITION BY구 이후 반드시 써야한다.

안쓰면 ORDER BY구가 없다고 에러메시지가 출력된다.

출처 : http://www.ezslookingaround.com/blog/tech/?no=1475&category=20
출처 : http://mhhan.tistory.com/entry/Oracle-Analytic-function

'Database > query' 카테고리의 다른 글

오라클 세로를 가로로 만들기  (0) 2011.10.04
oracle 그룹함수  (0) 2011.01.17
Oracle 특수문자 검색  (0) 2010.07.16
Oracle 숫자 콤마찍기.  (0) 2010.07.13
oracle select update  (0) 2010.02.04