SQLDSQL 활용GROUPING난이도 4MCQ

SQLD GROUPING 기출문제 #3759

문제

ROLLUP 결과에서 GROUPING 함수를 이용해 합계 행의 표시명을 지정하려고 한다. 다음 중 가장 적절한 CASE 표현식은?

① CASE WHEN GROUPING(DEPTNO) = 1 AND GROUPING(JOB) = 1 THEN '총계' WHEN GROUPING(JOB) = 1 THEN '소계' ELSE JOB END ② CASE WHEN GROUPING(DEPTNO) = 0 AND GROUPING(JOB) = 0 THEN '총계' ELSE NULL END ③ CASE WHEN GROUPING(DEPTNO) = 1 THEN DEPTNO ELSE '소계' END ④ CASE WHEN GROUPING(JOB) = 0 THEN '소계' ELSE JOB END

정답

1

해설

정답: 1. GROUPING 값이 1이면 해당 컬럼이 집계로 인해 생성된 NULL임을 의미하므로 DEPTNO와 JOB이 모두 1이면 총계, JOB만 1이면 소계로 표시할 수 있다.

오답 풀이

  • 1번: 총계와 소계를 구분하는 CASE로 적절하다.
  • 2번: GROUPING 값 0은 실제 그룹 컬럼이 존재하는 일반 행을 의미한다.
  • 3번: GROUPING 결과와 실제 컬럼 값을 혼동했다.
  • 4번: GROUPING(JOB)=0은 JOB이 존재하는 일반 상세 행이다.

보충 개념 GROUPING(컬럼)은 해당 컬럼이 집계에 의해 NULL로 표시된 경우 1, 실제 데이터에 의해 존재하는 경우 0을 반환한다. ROLLUP 결과의 소계와 총계를 구분할 때 유용하다.

SQLD 시험 준비 가이드

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

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

[SQLD] GROUPING SQL 활용 기출 #3759 | 문어CBT