문제
다음 [CUST] 테이블과 [GRADE] 테이블 데이터가 주어졌을 때, 아래 3개의 SQL 문을 실행한 결과값(반환되는 행의 수)의 총합(ㄱ+ㄴ+ㄷ)으로 가장 적절한 것은?
[CUST]
| CUST_ID | AMOUNT |
|---|---|
| 1 | 100 |
| 2 | 120 |
| 3 | 200 |
[GRADE]
| GRADE | MIN_AMT | MAX_AMT |
|---|---|---|
| A | 250 | 350 |
| B | 150 | 249 |
| C | 50 | 149 |
| D | 0 | 49 |
① 17 ② 18 ③ 19 ④ 20
정답
4번
해설
정답: 4. (ㄱ)12 + (ㄴ)3 + (ㄷ)5 = 20이다.
(ㄱ) CROSS JOIN은 카티션 곱이므로 3 × 4 = 12행. (ㄴ) INNER JOIN(BETWEEN): 100→C, 120→C, 200→B로 각각 1건씩 매칭되어 3행. (ㄷ) FULL OUTER JOIN: 매칭 3행 + 미매칭 좌측(CUST) 0행(3건 모두 매칭됨) + 미매칭 우측(GRADE) 2행(A[250~350], D[0~49]는 매칭되는 AMOUNT가 없음) = 5행.
오답 풀이
- ①: 17은 (ㄷ)을 3으로 잘못 본 경우의 값으로, 미매칭 GRADE 2건을 더하지 않았다.
- ②: 18은 계산 오류다.
- ③: 19는 계산 오류다.
- ④: 정답. 12 + 3 + 5 = 20이다.
보충 개념 FULL OUTER JOIN은 INNER 결과에 더해 양쪽의 미매칭 행을 모두 포함한다. BETWEEN 조인은 등가 조인이 아니므로 범위에 들어가는 행만 결합되고, 어느 행과도 결합되지 못한 GRADE 행은 우측 미매칭으로 별도 출력된다.