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구가 없다고 에러메시지가 출력된다.