문제
다음 SQL의 실행 결과로 가장 적절한 것은?
SQLSELECT region_code, SUM(sales_amount) as total_sales, CASE WHEN GROUPING(region_code) = 1 THEN '전체합계' ELSE region_code END as region_display FROM regional_sales WHERE year = 2024 GROUP BY ROLLUP(region_code) ORDER BY GROUPING(region_code), region_code;
지역별 데이터: EAST(1000), WEST(1500), SOUTH(800)
① 3개 행만 반환되며, 전체 합계 행은 생성되지 않는다
② 4개 행이 반환되며, 마지막 행의 region_display는 '전체합계'가 된다
③ 4개 행이 반환되며, 첫 번째 행의 region_display는 '전체합계'가 된다
④ GROUPING 함수 사용으로 인해 구문 오류가 발생한다
정답
2번
해설
ROLLUP(region_code)는 지역별 소계와 전체 합계를 생성합니다. ORDER BY GROUPING(region_code)에 의해 일반 그룹(GROUPING=0)이 먼저, 전체 합계(GROUPING=1)가 나중에 정렬됩니다. 따라서 EAST(1000), SOUTH(800), WEST(1500), 전체합계(3300) 순서로 4개 행이 반환되며, 마지막 행의 region_display는 '전체합계'가 됩니다.