문제
GROUP BY ROLLUP(부서, 직급) 을 사용한 집계에 대한 설명으로 옳은 것은?
① (부서, 직급)별 집계와 함께 부서별 소계, 그리고 전체 합계 행이 생성된다. ② (부서, 직급)별 집계와 함께 직급별 소계도 함께 생성된다. ③ ROLLUP은 GROUP BY 없이 단독으로 사용할 수 있다. ④ ROLLUP(부서, 직급)과 CUBE(부서, 직급)의 결과 행 수는 항상 동일하다.
정답
1번
해설
ROLLUP(a, b)는 인자 순서에 따라 계층적 소계를 만든다: (부서, 직급) → (부서) → () 세 수준의 그룹을 생성하므로, 상세 집계 + 부서별 소계 + 전체 합계가 나온다. 따라서 정답은 ①. ②(거짓): 직급 단독 소계는 ROLLUP이 만들지 않는다 — 모든 조합을 만드는 CUBE에서만 생성된다. ③(거짓): ROLLUP은 GROUP BY의 확장 문법으로 GROUP BY 없이 단독 사용할 수 없다. ④(거짓): CUBE(a,b)는 (a,b),(a),(b),() 네 그룹으로 ROLLUP(세 그룹)보다 결과 행이 많거나 같다. 보충: 어떤 소계 행인지 구분하려면 GROUPING 또는 GROUPING_ID 함수를 사용한다.