3월 진료 기록이 없는 환자를 조회하려 한다. 다음 결과를 얻기 위해 … | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 6회
3월 진료 기록이 없는 환자를 조회하려 한다. 다음 결과를 얻기 위해 빈칸에 들어갈 구문으로 옳은 것은?[환자]
| 환자번호 | 환자명 |
|---|---|
| P1 | 윤채아 |
| P2 | 길도현 |
| P3 | 성예서 |
| P4 | 탁민규 |
| P5 | 현소율 |
[진료]
| 진료번호 | 환자번호 | 진료월 |
|---|---|---|
| 1 | P1 | 3 |
| 2 | P1 | 4 |
| 3 | P2 | 4 |
| 4 | P3 | 3 |
| 5 | P5 | (null) |
SELECT P.환자번호, P.환자명
FROM 환자 P LEFT OUTER JOIN 진료 J
ON P.환자번호 = J.환자번호
( 빈칸 )
ORDER BY P.환자번호;[빈칸 후보]
㉠ AND J.진료월 = 3 WHERE J.진료번호 IS NULL ㉡ WHERE J.진료월 = 3 AND J.진료번호 IS NULL ㉢ AND J.진료월 = 3 AND J.진료번호 IS NULL ㉣ WHERE J.진료월 = 3 OR J.진료번호 IS NULL
[원하는 결과]
| 환자번호 | 환자명 |
|---|---|
| P2 | 길도현 |
| P4 | 탁민규 |
| P5 | 현소율 |
1
㉢
2
㉠
3
㉣
4
㉡
해설
3월 조건을 ON 절에 두면 3월 진료만 조인되고 나머지 환자는 J 열이 NULL 로 보존되므로, WHERE J.진료번호 IS NULL 로 짝이 없는 P2·P4·P5 만 고를 수 있다.
P2 는 4월 진료만, P5 는 진료월이 NULL 인 진료만 있어 ON 조건을 통과하지 못하고 P4 는 진료가 아예 없다.
- 월 조건을 WHERE 로 옮기면 IS NULL 과 동시에 참일 수 없어 0행이다.
- 두 조건을 모두 ON 에 두면 아무 행도 거르지 않아 환자 5명이 다 나온다.
- WHERE 의 OR 조건은 3월 진료가 있는 P1·P3 와 P4 를 고른다.
오류나 개정된 내용이 보이면 알려주세요