다음 SQL 의 실행 결과로 옳은 것은?[청구]청구번호청구액지급액101… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지

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

[청구]

청구번호청구액지급액
101500450
1023000
103200(null)
104(null)0
105150150
SELECT 청구번호,
       COALESCE(NULLIF(지급액, 0), 청구액) AS 기준액,
       CASE WHEN 지급액 > 0 THEN '지급'
            WHEN 지급액 = 0 THEN '부지급'
            ELSE '심사중' END AS 상태
  FROM 청구
 ORDER BY 청구번호;
1
청구번호기준액상태
101450지급
102300부지급
103200심사중
104(null)부지급
105150지급
2
청구번호기준액상태
101450지급
102300부지급
103200부지급
104(null)부지급
105150지급
3
청구번호기준액상태
101450지급
102300부지급
103200심사중
1040부지급
105150지급
4
청구번호기준액상태
101450지급
1020부지급
103200심사중
104(null)부지급
105150지급
해설

NULLIF(지급액, 0)은 0을 NULL 로 바꾸므로 102·104는 청구액으로 넘어가 102는 300, 청구액도 NULL 인 104는 COALESCE 결과가 NULL 이다.

103의 지급액 NULL 은 두 WHEN 비교가 모두 UNKNOWN 이라 ELSE 의 심사중이 되고, 104는 지급액이 0이라 부지급이다.

  • 102 기준액이 0인 표는 NULLIF 변환을 빠뜨렸다.
  • 103이 부지급인 표는 NULL 을 0처럼 비교했다.
  • 104 기준액이 0인 표는 모든 인수가 NULL 인 COALESCE 를 0으로 보았다.

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

이어서 풀어보기

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