다음 SQL 의 실행 결과로 옳은 것은? (EXCEPT 는 Oracle… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 10회
다음 SQL 의 실행 결과로 옳은 것은? (EXCEPT 는 Oracle 의 MINUS 와 같다)

[계약]

계약번호고객번호상품코드
1C1P1
2C1P1
3C1P2
4C2P1
5C3(null)
6C4P3

[청구]

청구번호고객번호상품코드
1C1P2
2C2P1
3C3(null)
4C5P3
SELECT 고객번호, 상품코드 FROM 계약
EXCEPT
SELECT 고객번호, 상품코드 FROM 청구
 ORDER BY 고객번호, 상품코드;
1
고객번호상품코드
C5P3
2
고객번호상품코드
C1P1
C4P3
3
고객번호상품코드
C1P1
C1P1
C4P3
4
고객번호상품코드
C1P1
C3(null)
C4P3
해설

EXCEPT(MINUS) 는 위 결과에서 아래 결과에 있는 행을 빼고 중복을 제거하므로 (C1, P1) 과 (C4, P3) 두 행만 남는다.

(C1, P2)·(C2, P1)·(C3, NULL) 은 청구에도 있어 빠지는데, 집합 연산은 NULL 끼리를 같은 값으로 비교한다.

  • (C1, P1) 을 두 행 남긴 표는 EXCEPT ALL 처럼 중복을 유지한 결과이다.
  • (C3, NULL) 을 남긴 표는 NULL 끼리를 다른 값으로 본 오해이다.
  • (C5, P3) 만 있는 표는 두 SELECT 의 순서를 바꿔 청구에서 계약을 뺀 결과이다.

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

이어서 풀어보기

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