분석함수란?
- - 테이블에 있는 데이터를 특정 용도로 분석하여 결과를 반환하는 함수
- - 복잡한 계산을 단순하게 처리해주는 함수
- - 쿼리 결과Set을 대상으로 계산을 수행하는 함수
- - SELECT 절에서 수행됨
- FROM, WHERE, GROUP BY 절에서 사용 불가
- ORDER BY 구문에서는 사용 가능
- - 오라클 8.1.6 부터 분석함수 지원
집계함수 vs 분석함수
집계함수
집계함수는 여러행 또는 테이블 전체 행으로부터 그룹별로 집계하여 결과를 반환한다.
1 2 3 4 | SELECT deptno , SUM (sal) s_sal FROM emp GROUP BY deptno; |
분석함수
분석 함수는 집계 결과를 각 행마다 보여준다.
1 2 3 4 5 | SELECT deptno , empno , sal , SUM (sal) OVER(PARTITION BY deptno) s_sal FROM emp; |
집계함수 vs 분석함수
- - 집계함수는 그룹별 최대, 최소, 합계, 평균, 건수 등을 구할 때 사용되며, 그룹별 1개의 행을 반환한다.
- - 분석함수는 그룹단위로 값을 계산한다는 점에서 집계함수와 유사하지만, 그룹마다가 아니라 결과Set의 각 행마다 집계결과를 보여준다는 점에서 집계함수와 상당한 차이가 있다.
- - 분석함수는 쉽게 생각해서, 그룹별 계산결과를 각 행마다 보여주는 것이다.
Syntax
1 2 3 4 5 6 | SELECT ANALYTIC_FUNCTION ( arguments ) OVER ( [ PARTITION BY 컬럼List ] [ ORDER BY 컬럼List ] [ WINDOWING 절 ( Rows |Range Between )] ) FROM 테이블 명; |
- - ANALYTIC_FUNCTION : 분석함수명(입력인자)
- - OVER : 분석함수임을 나타내는 키워드.
- - PARTITION BY : 계산 대상 그룹을 정한다.
- - ORDER BY : 대상 그룹에 대한 정렬을 수행한다.
- - WINDOWING 절 : 분석함수의 계산 대상 범위를 지정한다.
- ORDER BY 절에 종속적이다.
- 기본 생략 구문 : 정렬된 결과의 처음부터 현재행까지 [RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]
분석함수의 종류
- - 순위함수 : RANK, DENSE_RANK, ROW_NUMBER, NTILE
- - 집계함수 : SUM, MIN, MAX, AVG, COUNT
- - 기타함수 : LEAD, LAG, FIRST_VALUE, LAST_VALUE, RATIO_TO_REPORT
- - 분석함수(?) : KEEP, LISTAGG
태그
문서에 대하여
- - 강좌 URL : http://www.gurubee.net/lecture/2671
- - 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- - 구루비의 모든 강좌는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
'Oracle' 카테고리의 다른 글
집계함수 -> 분석함수 사용하기 (0) | 2014.12.03 |
---|---|
순위함수 RANK DENSE_RANK ROW_NUMBER 특징별 기억하면 좋고 (0) | 2014.12.03 |
오라클 분석해보기.. A CONNECT BY LEVEL (0) | 2014.12.03 |
세로로된 데이터 가로로 출력하기. (0) | 2014.12.02 |
오라클 트리거 트리거란 무엇인가? (0) | 2014.12.02 |