다음 SQL을 실행했을 때 결과 행 수는?[운임등급]등급최소최대S010… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
다음 SQL을 실행했을 때 결과 행 수는?[운임등급]
| 등급 | 최소 | 최대 |
|---|---|---|
| S | 0 | 10 |
| M | 10 | 30 |
| L | 30 | 50 |
[거래처]
| 거래처번호 | 지역 |
|---|---|
| 1 | 서울 |
| 2 | 부산 |
| 3 | 대전 |
[출고]
| 출고번호 | 거래처번호 | 중량 |
|---|---|---|
| 1 | 1 | 5 |
| 2 | 1 | 10 |
| 3 | 2 | 30 |
| 4 | 4 | 20 |
| 5 | (null) | 8 |
| 6 | 3 | 50 |
| 7 | 2 | (null) |
| 8 | 3 | 29 |
SELECT O.출고번호, C.지역, G.등급 FROM 출고 O JOIN 거래처 C ON O.거래처번호 = C.거래처번호 JOIN 운임등급 G ON O.중량 >= G.최소 AND O.중량 < G.최대 ORDER BY O.출고번호;
1
4
2
5
3
3
4
6
해설
거래처와의 EQUI 조인에서 없는 거래처 4 를 가진 출고와 거래처가 NULL 인 출고가 빠지고, 운임등급과의 NON-EQUI 조인에서 중량 NULL 인 출고와 어느 구간에도 속하지 않는 중량 50 출고가 빠져 4행이 남는다.
구간이 최소 이상·최대 미만이라 경계값 10·30 은 각각 M·L 한 등급에만 매칭된다.
- 경계값을 두 등급에 모두 붙이면 행 수가 늘어나지만 미만 조건이라 중복이 없다.
- 50 은 L 의 최대와 같아 미만 조건을 만족하지 못한다.
- 거래처가 없거나 NULL 인 출고는 INNER 조인에서 남지 않는다.
오류나 개정된 내용이 보이면 알려주세요