Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[출석]반… | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 7회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[출석]
| 반 | 강사 | 요일 | 인원 |
|---|---|---|---|
| A | 윤서 | 월 | 10 |
| A | 윤서 | 화 | 12 |
| A | 도현 | 월 | 8 |
| B | 하린 | 월 | 15 |
| B | 하린 | 화 | 5 |
SELECT *
FROM 출석
PIVOT (SUM(인원) FOR 요일 IN ('월' AS 월, '화' AS 화))
ORDER BY 반, 강사;1
| 반 | 월 | 화 |
|---|---|---|
| A | 18 | 12 |
| B | 15 | 5 |
2
| 반 | 강사 | 월 | 화 |
|---|---|---|---|
| A | 도현 | 8 | (null) |
| A | 윤서 | 10 | (null) |
| A | 윤서 | (null) | 12 |
| B | 하린 | 15 | (null) |
| B | 하린 | (null) | 5 |
3
| 반 | 강사 | 월 | 화 |
|---|---|---|---|
| A | 도현 | 8 | (null) |
| A | 윤서 | 10 | 12 |
| B | 하린 | 15 | 5 |
4
| 반 | 강사 | 월 | 화 |
|---|---|---|---|
| A | 도현 | 8 | 0 |
| A | 윤서 | 10 | 12 |
| B | 하린 | 15 | 5 |
해설
PIVOT 은 집계 열(인원)과 FOR 열(요일)을 뺀 나머지 열 반·강사를 모두 그룹 기준으로 삼으므로 (A, 도현)·(A, 윤서)·(B, 하린)의 3행이 된다.
도현은 화요일 데이터가 없어 화 열이 0 이 아닌 NULL 이며, 같은 그룹의 월·화 값은 한 행으로 합쳐진다.
- 반별 2행 표는 강사 열도 그룹 기준이 된다는 점을 놓친 결과로, 인라인 뷰로 강사를 빼야 나온다.
- 도현의 화를 0 으로 본 표는 값이 없는 칸이 NULL 이라는 점을 놓친 것이다.
- 원본 5행이 그대로 남은 표는 PIVOT 이 그룹별로 행을 합친다는 점을 무시한 결과이다.
오류나 개정된 내용이 보이면 알려주세요