다음 SQL 의 실행 결과로 옳은 것은?[반편성]과목반인원수학A10수학… | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 7회
다음 SQL 의 실행 결과로 옳은 것은?[반편성]
| 과목 | 반 | 인원 |
|---|---|---|
| 수학 | A | 10 |
| 수학 | B | 8 |
| 영어 | A | 12 |
| 영어 | (null) | 5 |
SELECT 과목, 반, SUM(인원) AS 합계,
GROUPING(반) AS G
FROM 반편성
GROUP BY GROUPING SETS ((과목, 반), 과목)
ORDER BY 과목, G, 반;1
| 과목 | 반 | 합계 | G |
|---|---|---|---|
| 수학 | A | 10 | 0 |
| 수학 | B | 8 | 0 |
| 수학 | (null) | 18 | 1 |
| 영어 | A | 12 | 0 |
| 영어 | (null) | 5 | 1 |
| 영어 | (null) | 17 | 1 |
2
| 과목 | 반 | 합계 | G |
|---|---|---|---|
| 수학 | A | 10 | 0 |
| 수학 | B | 8 | 0 |
| 수학 | (null) | 18 | 1 |
| 영어 | A | 12 | 0 |
| 영어 | (null) | 5 | 0 |
| 영어 | (null) | 17 | 1 |
3
| 과목 | 반 | 합계 | G |
|---|---|---|---|
| 수학 | A | 10 | 0 |
| 수학 | B | 8 | 0 |
| 수학 | (null) | 18 | 1 |
| 영어 | A | 12 | 0 |
| 영어 | (null) | 17 | 1 |
4
| 과목 | 반 | 합계 | G |
|---|---|---|---|
| 수학 | A | 10 | 0 |
| 수학 | B | 8 | 0 |
| 수학 | (null) | 18 | 1 |
| 영어 | A | 12 | 0 |
| 영어 | (null) | 5 | 0 |
| 영어 | (null) | 17 | 1 |
| (null) | (null) | 35 | 1 |
해설
GROUPING SETS 에 적은 (과목, 반) 상세 4행과 과목 소계 2행만 만들어지며, 총계 행은 없다.
영어·NULL·5 는 원래 반이 NULL 인 상세 행이라 GROUPING(반)=0 이고, 소계 행의 NULL 만 집계로 생겨 1 이다.
- 영어·NULL·5 의 G 를 1 로 본 표는 NULL 이면 모두 소계라고 오해한 것이다.
- 영어·NULL·5 가 빠진 표는 NULL 반 상세 행을 소계와 합쳐 버린 결과이다.
- 총계 35 행이 있는 표는 빈 그룹 () 을 적지 않았는데도 총계가 생긴다고 본 것이다.
오류나 개정된 내용이 보이면 알려주세요