다음 SQL을 실행한 결과로 옳은 것은?[고객]고객번호고객명누적금액1가… | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 1회
다음 SQL을 실행한 결과로 옳은 것은?[고객]
| 고객번호 | 고객명 | 누적금액 |
|---|---|---|
| 1 | 가람 | 50000 |
| 2 | 나무 | 100000 |
| 3 | 다솜 | 299999 |
| 4 | 라온 | 300000 |
| 5 | 마음 | (null) |
| 6 | 보람 | 1200000 |
[등급]
| 등급명 | 하한 | 상한 |
|---|---|---|
| 일반 | 0 | 100000 |
| 실버 | 100000 | 300000 |
| 골드 | 300000 | 1000000 |
SELECT C.고객명, G.등급명
FROM 고객 C
JOIN 등급 G
ON C.누적금액 BETWEEN G.하한 AND G.상한
ORDER BY C.고객번호, G.하한;1
| 고객명 | 등급명 |
|---|---|
| 가람 | 일반 |
| 나무 | 실버 |
| 다솜 | 실버 |
| 라온 | 골드 |
2
| 고객명 | 등급명 |
|---|---|
| 가람 | 일반 |
| 나무 | 일반 |
| 나무 | 실버 |
| 다솜 | 실버 |
| 라온 | 실버 |
| 라온 | 골드 |
3
| 고객명 | 등급명 |
|---|---|
| 가람 | 일반 |
| 나무 | 일반 |
| 다솜 | 실버 |
| 라온 | 실버 |
4
| 고객명 | 등급명 |
|---|---|
| 가람 | 일반 |
| 나무 | 일반 |
| 나무 | 실버 |
| 다솜 | 실버 |
| 라온 | 실버 |
| 라온 | 골드 |
| 마음 | (null) |
| 보람 | (null) |
해설
비등가 조인(Non-Equi Join)은 BETWEEN 조건을 만족하는 등급마다 행을 만들므로, 경계값 100000과 300000은 두 등급에 동시에 걸려 각각 2행이 된다.
50000·299999는 1행씩이고, 누적금액이 NULL인 마음과 범위를 벗어난 보람은 조건이 참이 아니어서 빠지므로 2+2+1+1=6행이다.
- 나무를 실버에만 둔 표는 BETWEEN이 하한만 포함한다고 보았다.
- 라온을 실버에만 둔 표는 BETWEEN이 상한만 포함한다고 보았다.
- 마음·보람이 있는 표는 OUTER JOIN처럼 짝 없는 행을 남겼다.
오류나 개정된 내용이 보이면 알려주세요