SQLDSQL 활용ROLLUP/CUBE/GROUPING난이도 2MCQ

SQLD ROLLUP/CUBE/GROUPING 기출문제 #201

문제

다음 SQL 실행 결과에서 '부서별소계'가 출력되는 조건은?

SQL
SELECT CASE WHEN GROUPING(DEPTNO)=0 AND GROUPING(JOB)=1 THEN '부서별소계' WHEN GROUPING(DEPTNO)=1 AND GROUPING(JOB)=1 THEN '전체합계' ELSE DEPTNO||'-'||JOB END AS 구분, COUNT(*) FROM EMP GROUP BY ROLLUP(DEPTNO, JOB);

① ROLLUP에 의해 JOB이 NULL로 집계된 행 ② ROLLUP에 의해 DEPTNO가 NULL로 집계된 행
③ 원본 데이터에서 JOB이 NULL인 행 ④ ROLLUP에 의해 DEPTNO, JOB 모두 NULL로 집계된 행

정답

1

해설

GROUPING(DEPTNO)=0은 DEPTNO가 실제 값(소계 대상이 아님)을, GROUPING(JOB)=1은 JOB이 ROLLUP에 의해 NULL로 집계됨을 의미합니다. 즉 부서별로 모든 JOB을 합계한 부서별 소계 행입니다. ② DEPTNO가 NULL인 것은 전체합계 조건입니다. ③ 원본 NULL은 GROUPING=0으로 구분됩니다. ④ 두 칼럼 모두 NULL인 것은 전체합계입니다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] ROLLUP/CUBE/GROUPING SQL 활용 기출 #201 | sqldpass