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

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

문제

다음 SQL의 실행 결과로 가장 적절한 것은?

SQL
SELECT DEPT, JOB, CASE WHEN GROUPING(DEPT)=1 AND GROUPING(JOB)=1 THEN '전체합계' WHEN GROUPING(DEPT)=0 AND GROUPING(JOB)=1 THEN DEPT||'소계' ELSE DEPT||'-'||JOB END AS LEVEL_INFO, SUM(SAL) AS TOTAL FROM EMP WHERE DEPT IN ('10','20') GROUP BY CUBE(DEPT, JOB) ORDER BY DEPT, JOB;

① CUBE는 4가지 그룹핑을 생성하며, LEVEL_INFO에 '전체합계', '부서소계', '직책소계', '상세' 4가지 레벨이 표시된다 ② ROLLUP과 동일하게 3가지 그룹핑만 생성되며, JOB별 소계는 표시되지 않는다 ③ GROUPING 함수 조합이 잘못되어 오류가 발생한다 ④ ORDER BY로 인해 소계 행들이 맨 아래로 이동한다

정답

1

해설

① CUBE(DEPT,JOB)는 (DEPT,JOB), (DEPT), (JOB), () 4가지 그룹핑을 생성합니다. CASE문의 GROUPING 함수 조합으로 각각 상세, 부서소계, 직책소계, 전체합계 레벨을 구분하여 표시합니다. ② CUBE는 ROLLUP보다 많은 그룹핑을 생성하며, JOB별 소계도 포함됩니다. ③ GROUPING 함수 사용법이 올바릅니다. ④ ORDER BY는 정렬만 수행하며, 소계 행의 위치는 그룹핑 결과에 따라 결정됩니다.

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

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

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