다음 SQL 의 실행 결과로 옳은 것은? (오름차순 정렬에서 NULL … | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 2회
다음 SQL 의 실행 결과로 옳은 것은? (오름차순 정렬에서 NULL 은 마지막)[진료실적]
| 월 | 진료과 | 건수 |
|---|---|---|
| 3 | 내과 | 10 |
| 3 | 외과 | 20 |
| 4 | 내과 | 30 |
SELECT 월, 진료과, SUM(건수) AS 합계 FROM 진료실적 GROUP BY ROLLUP(월, 진료과) ORDER BY 월, 진료과;
1
| 월 | 진료과 | 합계 |
|---|---|---|
| 3 | 내과 | 10 |
| 3 | 외과 | 20 |
| 3 | (null) | 30 |
| 4 | 내과 | 30 |
| 4 | (null) | 30 |
2
| 월 | 진료과 | 합계 |
|---|---|---|
| 3 | 내과 | 10 |
| 3 | 외과 | 20 |
| 3 | (null) | 30 |
| 4 | 내과 | 30 |
| 4 | (null) | 30 |
| (null) | 내과 | 40 |
| (null) | 외과 | 20 |
| (null) | (null) | 60 |
3
| 월 | 진료과 | 합계 |
|---|---|---|
| 3 | 내과 | 10 |
| 3 | 외과 | 20 |
| 4 | 내과 | 30 |
| (null) | 내과 | 40 |
| (null) | 외과 | 20 |
| (null) | (null) | 60 |
4
| 월 | 진료과 | 합계 |
|---|---|---|
| 3 | 내과 | 10 |
| 3 | 외과 | 20 |
| 3 | (null) | 30 |
| 4 | 내과 | 30 |
| 4 | (null) | 30 |
| (null) | (null) | 60 |
해설
ROLLUP(월, 진료과)는 (월, 진료과)·(월)·() 세 단계만 만들어 월별 소계 2행과 총계 1행이 상세 3행에 더해진 6행이다.
인수 순서가 계층이 되므로 앞 열인 월 기준 소계만 생기고 진료과별 소계는 나오지 않는다.
- 진료과 소계가 있고 월 소계가 없는 표는 인수 순서를 뒤집은 ROLLUP(진료과, 월)의 결과다.
- 총계가 없는 표는 마지막 () 단계를 빠뜨린 것이다.
- 양쪽 소계가 다 있는 8행 표는 CUBE의 결과다.
오류나 개정된 내용이 보이면 알려주세요