문제
GROUPING SETS 함수에 대한 설명으로 올바르지 않은 것은?
① 다양한 소계 집합을 한 번의 쿼리로 효율적으로 구할 수 있다. ② 괄호 내에 명시된 인수의 순서가 달라지면 집계의 결과 항목 자체도 달라진다. ③ 정렬하려면 별도의 ORDER BY 절을 사용해야 한다. ④ UNION ALL을 결합한 것과 동일한 결과를 생성할 수 있다.
정답
2번
해설
정답: 2. GROUPING SETS는 나열된 각 집합을 독립적으로 집계하므로, 인수(집합)의 나열 순서가 바뀌어도 만들어지는 집계 항목 자체는 동일하다. 정렬 순서만 영향을 받을 수 있을 뿐이라 ②는 틀린 설명이다.
오답 풀이
- ①: 여러 GROUP BY 결과를 한 번의 스캔/쿼리로 묶어 구할 수 있다. 옳은 설명.
- ②: 정답(틀린 설명). 순서가 달라져도 집계 결과 집합의 구성은 같다. ROLLUP(A,B)≠ROLLUP(B,A)처럼 순서가 의미 있는 것과 혼동한 것이다.
- ③: GROUPING SETS는 정렬을 보장하지 않으므로 원하는 순서가 있으면 ORDER BY를 별도로 써야 한다. 옳은 설명.
- ④: 각 그룹 집합에 대한 GROUP BY 결과를 UNION ALL로 이어 붙인 것과 동일한 결과를 만든다. 옳은 설명.
보충 개념 GROUPING SETS((A),(B),())는 A별, B별, 전체 집계를 각각 만들어 합친 것과 같다. ROLLUP은 컬럼 순서가 계층(소계 단계)을 결정해 순서에 민감하지만, GROUPING SETS는 나열된 집합 자체가 결과라 순서에 무관하다.