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 |