다음 SQL 의 결과로 옳은 것은?[회원]회원번호이름1한서진2오태윤3문… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
다음 SQL 의 결과로 옳은 것은?[회원]
| 회원번호 | 이름 |
|---|---|
| 1 | 한서진 |
| 2 | 오태윤 |
| 3 | 문지아 |
| 4 | 배현우 |
[대출]
| 대출번호 | 회원번호 | 대출일 |
|---|---|---|
| 1 | 1 | 2026-03-02 |
| 2 | 1 | 2026-03-15 |
| 3 | 3 | 2026-03-09 |
| 4 | 1 | 2026-02-20 |
| 5 | 3 | 2026-03-21 |
SELECT M.이름,
(SELECT COUNT(*) FROM 대출 L
WHERE L.회원번호 = M.회원번호) AS 대출수,
(SELECT MAX(L.대출일) FROM 대출 L
WHERE L.회원번호 = M.회원번호) AS 최근대출
FROM 회원 M
ORDER BY M.회원번호;1
| 이름 | 대출수 | 최근대출 |
|---|---|---|
| 한서진 | 3 | 2026-03-15 |
| 문지아 | 2 | 2026-03-21 |
2
| 이름 | 대출수 | 최근대출 |
|---|---|---|
| 한서진 | 3 | 2026-03-15 |
| 오태윤 | (null) | (null) |
| 문지아 | 2 | 2026-03-21 |
| 배현우 | (null) | (null) |
3
| 이름 | 대출수 | 최근대출 |
|---|---|---|
| 한서진 | 3 | 2026-03-15 |
| 오태윤 | 0 | (null) |
| 문지아 | 2 | 2026-03-21 |
| 배현우 | 0 | (null) |
4
| 이름 | 대출수 | 최근대출 |
|---|---|---|
| 한서진 | 3 | 2026-03-15 |
| 오태윤 | 1 | (null) |
| 문지아 | 2 | 2026-03-21 |
| 배현우 | 1 | (null) |
해설
스칼라 서브쿼리는 메인쿼리 행마다 한 값을 돌려주므로 회원 4명이 모두 남고, 대출이 없으면 COUNT 는 0, MAX 는 NULL 이 된다.
한서진은 대출 3건 중 가장 늦은 3월 15일, 문지아는 2건 중 3월 21일이 최근대출이다.
- 대출 없는 회원이 빠진 표는 INNER JOIN 처럼 처리한 결과이다.
- 대출수를 NULL 로 둔 표는 대상 행이 없을 때 COUNT 도 NULL 이라고 본 경우이다.
- 대출수를 1로 둔 표는 LEFT OUTER JOIN 후 COUNT(*) 로 NULL 결합 행까지 센 결과이다.
오류나 개정된 내용이 보이면 알려주세요