Oracle 에서 [예약] 테이블에 다음 SQL 을 실행한 결과로 옳은… | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 1회
Oracle 에서 [예약] 테이블에 다음 SQL 을 실행한 결과로 옳은 것은?

[예약]

예약번호객실요일인원
1A토2
2A일3
3A토1
4B토4
5C금2
6C금3
7D일2
SELECT *
  FROM (SELECT 객실, 요일, 인원 FROM 예약)
 PIVOT (SUM(인원)
        FOR 요일 IN ('토' AS 토, '일' AS 일))
 ORDER BY 객실;
1
객실토일
A33
B4(null)
D(null)2
2
객실토일
A33
B40
C00
D02
3
객실토일금
A33(null)
B4(null)(null)
C(null)(null)5
D(null)2(null)
4
객실토일
A33
B4(null)
C(null)(null)
D(null)2
해설

PIVOT은 IN 목록에 적은 '토'·'일'만 열로 만들고, 인라인 뷰에 남은 객실로 묶으므로 객실 A·B·C·D 네 행이 나온다.

객실 C 는 금요일 예약뿐이라 두 피벗 열이 모두 NULL 인 행으로 남고, 값이 없는 칸은 SUM 대상이 없어 0 이 아닌 NULL 로 표시된다.

  • 객실 C 가 빠진 표는 IN 목록 밖 값만 가진 그룹이 사라진다고 본 것이다.
  • 빈 칸을 0 으로 채운 표는 집계 대상이 없는 SUM 이 0 을 돌려준다고 본 것이다.
  • 금 열이 생긴 표는 IN 목록에 없는 값도 열로 펼쳐진다고 본 것이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 1회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기