본문 바로가기
database/oracle

[oracle] OVER (PARTION BY) ; 조건별 누계 (분석함수)

by moonsiri 2020. 10. 9.
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

댓글