Oracle

오라클 group by rollup 간단 설명 및 예제

뽀우맨 2024. 3. 20. 15:34

 

중간합계, 총합계를 구하는 구문으로 보통 group by rollup 을 많이 씁니다.

일반적인 group by 할때 나오는 결과의 중간에 summery 한 행을 추가해 주는 것이지요.

추가 된 summery 행은 group by 에 명시한 컬럼에 따라 계층적으로 표현됩니다.

 

아래에 간략한 예제를 보시면 쉽게 이해되실 겁니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
select case when A.이름 is     null and A.과목 is null then '총합:' else A.이름 end as 이름,
         case when A.이름 is not null and A.과목 is null then '소계:' else A.과목 end as 과목,
         sum(A.점수) as 점수 from
(
    SELECT 'A' AS 이름,  'KOR' AS 과목, 90 AS 점수 FROM DUAL
    UNION
    SELECT 'A''MAT',  95 FROM DUAL
    UNION
    SELECT 'B''KOR',  80 FROM DUAL
    UNION
    SELECT 'B''MAT'100 FROM DUAL
    UNION
    SELECT 'C''KOR',  70 FROM DUAL
    UNION
    SELECT 'C''MAT',  85 FROM DUAL
) A
GROUP BY ROLLUP (A.이름, A.과목)
cs