게시일: Dec 07, 2011 11:27:54 PM
- 데이터를 분석하는 기능을 하는 함수
- 분석 함수용 그룹을 오라클에서는 윈도우(window)라고 부른다
[구분 형식]
분석함수 ( 파라미터1, 파라미터2, ....) OVER ( < query_partition 절 >
< order_by 절 >
< windowing 절 >
)
분석 함수 : AVG, COUNT, DENSE_RANK, FIRST, LAST, LEAD, MAX, MIN, PERCENT_RANK, RANK, SUM 등.....
파라미터 : 분석 함수에 따라 0에서 3개까지의 파라미터를 가질 수 있다.
query_partition 절 : PARTITION BY expr
PARTITION BY로 시작되며 expr에 따라 그룹별로 단일 결과 셋으로 분리하는 역할을 하는데, 쉽게 말하면 분석 함수의 계산대상 그룹을 지정한다고 보면 된다.
order_by 절 : PARTITION BY 절 뒤에 위치하며 계산 대상 그룹에 대해 정렬작업을 수행한다.
windowing 절 : 분석 함수의 대상이 되는 데이터를 행 기준으로 범위를 더 세부적으로 정의하는데, PARTITION BY에 의해 나누어진 기준그룹에 또 다른 소그룹을 만든다. 이 절을 생략하면 소그룹 자체가 기준그룹이 된다.
예) SELECT department_id
, last_name
, salary
, SUM(salary) OVER (PARTITION BY department_id ORDER BY last_name)
FROM employee;
- 분석 함수는 오직 SELECT 절에서만 사용 가능
- 오라클 SQL 엔진은 FROM, WHERE, GROUP BY, HAVING 등의 절을 먼저 처리하고 맨 마지막에 분석 함수를 처리한다. (아래 항목 예외)
- 유일하게 분석 함수 다음에 처리되는 것은 ORDER BY 절이다.
- SUM, MIN, AVG 같은 함수는 집계 함수에 해당하지만 PARTITION BY 절 등과 함께 사용되어 분석 기능을 수행하게 된다.