728x90
반응형
집계함수는 여러행 또는 테이블 전체 행으로부터 그룹별로 집계하여 결과를 반환(그룹별 1개의 행을 반환)하고,
분석함수는 집계 결과를 각 행마다보여줍니다. (+ 오라클 8.1.6 부터 분석함수 지원)
SELECT ANALYTIC_FUNTION (arguments)
OVER ( [ PARTITION BY 컬럼]
[ ORDER BY 컬럼 ]
[ WINDOWING 절 (Rows | Range Between) ]
)
FROM TABLE_NAME
- 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
예제)
CITY | SEQ | SAL |
서울 | 1 | 1000 |
서울 | 2 | 3000 |
서울 | 3 | 2000 |
대전 | 1 | 3000 |
대전 | 2 | 2000 |
SELECT CITY, SEQ, SAL
,SUM(SAL) OVER (PARTITION BY CITY ORDER BY SEQ) SUM
FROM TABLE
실행 결과 ↓
CITY | SEQ | SAL | SUM |
대전 | 1 | 3000 | 3000 |
대전 | 2 | 2000 | 5000 |
서울 | 1 | 1000 | 1000 |
서울 | 2 | 3000 | 4000 |
서울 | 3 | 2000 | 6000 |
728x90
반응형
'database > oracle' 카테고리의 다른 글
[oracle] ROLLUP, CUBE, GROUPING SETS (집계함수) (0) | 2020.10.08 |
---|
댓글