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

1[SQLD] SQL 개발자 기출유형 모의고사 1회
Oracle 기준으로 다음 SQL을 실행한 결과로 옳은 것은?

[예약]

예약번호인원할인율
14(null)
2210
3(null)0
435
SELECT 예약번호, NVL(인원, 1) AS 인원수,
       NVL2(할인율, '할인', '정가') AS 구분,
       NULLIF(할인율, 0) AS 할인
  FROM 예약
 ORDER BY 예약번호;
1
예약번호인원수구분할인
14정가(null)
22할인10
31할인(null)
43할인5
2
예약번호인원수구분할인
14정가(null)
22할인10
31할인0
43할인5
3
예약번호인원수구분할인
14정가0
22할인10
31할인(null)
43할인5
4
예약번호인원수구분할인
14정가(null)
22할인10
31정가(null)
43할인5
해설

NVL2는 0도 NULL이 아닌 값으로 보므로 예약번호 3의 구분은 '할인'이고, NULLIF(할인율, 0)은 두 값이 같으면 NULL을 돌려주어 그 행의 할인이 NULL이 된다.

NVL(인원, 1)은 인원이 NULL인 예약번호 3만 1로 바꾸며, 할인율이 NULL인 예약번호 1은 NULLIF 결과도 NULL로 남는다.

  • 예약번호 3을 '정가'로 둔 표는 0을 NULL로 착각했다.
  • 예약번호 3의 할인을 0으로 둔 표는 NULLIF의 동작을 놓쳤다.
  • 예약번호 1의 할인을 0으로 둔 표는 NULLIF가 NULL을 0으로 바꾼다고 보았다.

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

이어서 풀어보기

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