다음 SQL을 실행했을 때 결과 행 수와, 그중 주문번호가 NULL인 … | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 1회
다음 SQL을 실행했을 때 결과 행 수와, 그중 주문번호가 NULL인 행의 수를 순서대로 나열한 것은?[고객]
| 고객번호 | 고객명 |
|---|---|
| 1 | 김하늘 |
| 2 | 박도윤 |
| 3 | 이서준 |
| 4 | 최유나 |
[주문]
| 주문번호 | 고객번호 | 금액 | 상태 |
|---|---|---|---|
| 101 | 1 | 30000 | 완료 |
| 102 | 1 | 15000 | 취소 |
| 103 | 2 | 20000 | 취소 |
| 104 | 3 | 12000 | 완료 |
| 105 | 3 | 8000 | 완료 |
| 106 | (null) | 5000 | 완료 |
SELECT C.고객명, O.주문번호
FROM 고객 C LEFT OUTER JOIN 주문 O
ON C.고객번호 = O.고객번호
AND O.상태 = '완료'
ORDER BY C.고객명, O.주문번호;1
3, 0
2
4, 1
3
5, 2
4
6, 1
해설
ON절의 상태 조건은 조인 매칭 조건으로만 쓰이므로, 완료 주문이 없는 고객도 LEFT OUTER JOIN에 의해 주문번호 NULL 행으로 남아 5행이 된다.김하늘 101, 이서준 104·105가 매칭되고 취소 주문만 있는 박도윤과 주문이 없는 최유나는 NULL 로 1행씩 보존된다. 고객번호가 NULL 인 106 주문은 기준 테이블에 짝이 없어 나오지 않는다.
- 상태 조건을 WHERE 절에 둔 경우라야 NULL 행이 걸러져 3행이 된다.
- 상태 조건을 무시하면 취소 주문까지 붙어 6행이 된다.
- 박도윤을 빼는 것은 매칭 실패 행을 보존하는 외부 조인 규칙에 어긋난다.
오류나 개정된 내용이 보이면 알려주세요