다음 SQL 의 실행 결과로 옳은 것은?[계약]계약번호상품코드채널보험료… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 10회
다음 SQL 의 실행 결과로 옳은 것은?[계약]
| 계약번호 | 상품코드 | 채널 | 보험료 |
|---|---|---|---|
| 1 | P1 | 대면 | 50 |
| 2 | P1 | 온라인 | 30 |
| 3 | P2 | (null) | 40 |
| 4 | P2 | 대면 | 45 |
| 5 | P3 | 온라인 | 20 |
[상품]
| 상품코드 | 채널 | 상품명 |
|---|---|---|
| P1 | 대면 | 종신A |
| P1 | 온라인 | 종신B |
| P2 | 대면 | 실손A |
| P3 | TM | 암보험 |
SELECT * FROM 계약 NATURAL JOIN 상품 ORDER BY 계약번호;
1
| 상품코드 | 채널 | 계약번호 | 보험료 | 상품명 |
|---|---|---|---|---|
| P1 | 대면 | 1 | 50 | 종신A |
| P1 | 온라인 | 2 | 30 | 종신B |
| P2 | (null) | 3 | 40 | 실손A |
| P2 | 대면 | 4 | 45 | 실손A |
2
| 계약번호 | 상품코드 | 채널 | 보험료 | 상품명 |
|---|---|---|---|---|
| 1 | P1 | 대면 | 50 | 종신A |
| 2 | P1 | 온라인 | 30 | 종신B |
| 4 | P2 | 대면 | 45 | 실손A |
3
| 상품코드 | 채널 | 계약번호 | 보험료 | 상품명 |
|---|---|---|---|---|
| P1 | 대면 | 1 | 50 | 종신A |
| P1 | 온라인 | 2 | 30 | 종신B |
| P2 | 대면 | 4 | 45 | 실손A |
| P3 | 온라인 | 5 | 20 | (null) |
4
| 상품코드 | 채널 | 계약번호 | 보험료 | 상품명 |
|---|---|---|---|---|
| P1 | 대면 | 1 | 50 | 종신A |
| P1 | 온라인 | 2 | 30 | 종신B |
| P2 | 대면 | 4 | 45 | 실손A |
해설
NATURAL JOIN 은 이름이 같은 상품코드·채널 두 열이 모두 같은 행만 결합하고, SELECT * 에서 공통 열을 맨 앞에 한 번만 표시한다.
계약 3은 채널이 NULL 이라 등치 비교가 UNKNOWN 이 되어 빠지고, 계약 5는 (P3, 온라인) 짝이 상품에 없어 빠지므로 계약 1·2·4 세 행이 남는다.
- 계약 3을 실손A 와 결합한 표는 NULL 인 공통 열을 비교에서 건너뛴다고 본 오해이다.
- 계약번호를 맨 앞에 둔 표는 공통 열이 앞으로 모인다는 규칙을 놓쳤다.
- 계약 5를 상품명 NULL 로 남긴 표는 외부 조인처럼 처리한 결과이다.
오류나 개정된 내용이 보이면 알려주세요