Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[병동]병… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[병동]
| 병동코드 | 병동명 |
|---|---|
| W1 | 본관3 |
| W2 | 별관5 |
| W3 | 신관7 |
[입원]
| 입원번호 | 환자명 | 병동코드 | 퇴원일 |
|---|---|---|---|
| 1 | 강민 | W1 | (null) |
| 2 | 오라 | W1 | 2026-03-04 |
| 3 | 남궁솔 | W2 | (null) |
| 4 | 표지안 | W8 | (null) |
| 5 | 하율 | (null) | (null) |
SELECT B.환자명, A.병동명 FROM 병동 A, 입원 B WHERE A.병동코드(+) = B.병동코드 AND B.퇴원일 IS NULL ORDER BY B.입원번호;
1
| 환자명 | 병동명 |
|---|---|
| 강민 | 본관3 |
| 남궁솔 | 별관5 |
| (null) | 신관7 |
2
| 환자명 | 병동명 |
|---|---|
| 강민 | 본관3 |
| 남궁솔 | 별관5 |
3
| 환자명 | 병동명 |
|---|---|
| 강민 | 본관3 |
| 오라 | 본관3 |
| 남궁솔 | 별관5 |
| 표지안 | (null) |
| 하율 | (null) |
4
| 환자명 | 병동명 |
|---|---|
| 강민 | 본관3 |
| 남궁솔 | 별관5 |
| 표지안 | (null) |
| 하율 | (null) |
해설
(+) 는 값이 없을 수 있는 병동 쪽에 붙었으므로 입원 LEFT OUTER JOIN 병동 과 같고, 퇴원일 조건은 기준 테이블 열이라 WHERE 필터로 적용된다.
퇴원한 오라는 걸러지고, 없는 병동코드 W8 인 표지안과 병동코드가 NULL 인 하율은 병동명이 NULL 인 채 남아 4행이 된다.
- 2행 결과는 짝 없는 입원 행을 버린 INNER JOIN 이다.
- 신관7 이 나온 결과는 병동을 기준 테이블로 잘못 본 것이다.
- 오라가 포함된 결과는 퇴원일 조건을 무시한 것이다.
오류나 개정된 내용이 보이면 알려주세요