문제
아래와 같이 (A, B) 상세 집계, (A) 상위 단계 소계, 전체 합계 () 의 세 그룹 집합만 생성하는 GROUP BY 확장 기능으로 가장 적절한 것은?
<생성되는 그룹 집합>
(A, B)— 상세 집계(A)— 상위 단계 소계()— 전체 합계
① CUBE(A, B) ② ROLLUP(A, B) ③ GROUPING SETS((A, B), (B), ()) ④ GROUPING(A, B)
정답
2번
해설
정답: 2. ROLLUP(A, B) 는 지정한 컬럼 순서에 따라 (A, B), (A), () 의 계층적 그룹 집합을 차례로 생성한다.
오답 풀이
- 1번: CUBE(A, B) 는 가능한 모든 조합인
(A, B),(A),(B),()네 그룹을 생성하므로(B)가 추가로 포함된다. - 2번: ROLLUP(A, B) 의 결과 그룹 집합이 문제의 요구와 정확히 일치한다.
- 3번: GROUPING SETS((A, B), (B), ()) 는
(A)가 빠지고 대신(B)가 포함되어 요구와 다르다. - 4번: GROUPING(A, B) 는 집계 행 여부를 1/0 으로 판별하는 함수이며 그룹 집합을 생성하는 절이 아니다.
보충 개념 ROLLUP 은 가장 왼쪽 컬럼부터 차례로 묶음을 줄여나가는 계층 집계이므로 (부서, 직무) 별 상세 → (부서) 별 소계 → 전체 합계처럼 상위 단계로 올라가는 리포트에 적합하다. CUBE 는 가능한 모든 조합, GROUPING SETS 는 임의 조합을 직접 명시할 때 사용한다.