다음 SQL의 실행 결과로 옳은 것은?[대출]대출번호회원번호대출일연체일… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
다음 SQL의 실행 결과로 옳은 것은?[대출]
| 대출번호 | 회원번호 | 대출일 | 연체일 |
|---|---|---|---|
| 1 | M1 | 2026-02-25 | 7 |
| 2 | M1 | 2026-03-02 | 0 |
| 3 | M1 | 2026-03-09 | 2 |
| 4 | M2 | 2026-03-03 | 6 |
| 5 | M3 | 2026-03-04 | (null) |
| 6 | M3 | 2026-02-27 | 3 |
| 7 | M4 | 2026-03-05 | 1 |
| 8 | M4 | 2026-03-12 | (null) |
| 9 | M5 | 2026-02-10 | 9 |
SELECT 회원번호, COUNT(*) AS 건수, SUM(연체일) AS 합계 FROM 대출 WHERE 대출일 >= DATE '2026-03-01' GROUP BY 회원번호 HAVING COUNT(*) >= 2 OR SUM(연체일) > 5 ORDER BY 회원번호;
1
| 회원번호 | 건수 | 합계 |
|---|---|---|
| M1 | 2 | 2 |
| M2 | 1 | 6 |
| M3 | 1 | (null) |
| M4 | 2 | 1 |
2
| 회원번호 | 건수 | 합계 |
|---|---|---|
| M1 | 2 | 2 |
| M2 | 1 | 6 |
| M4 | 2 | 1 |
3
| 회원번호 | 건수 | 합계 |
|---|---|---|
| M1 | 2 | 2 |
| M2 | 1 | 6 |
| M4 | 2 | (null) |
4
| 회원번호 | 건수 | 합계 |
|---|---|---|
| M1 | 3 | 9 |
| M2 | 1 | 6 |
| M4 | 2 | 1 |
해설
WHERE가 먼저 3월 대출만 남기므로 M1 은 2건 합계 2, M2 는 1건 6, M3 은 1건 NULL, M4 는 2건 1 이 되고 M5 는 그룹이 생기지 않는다.
HAVING에서 M1·M4 는 2건 이상, M2 는 합계가 5 초과라 남고, M3 은 1건이며 NULL > 5 가 UNKNOWN 이라 빠진다.
- M1 이 3건·9 인 표는 2월 대출까지 집계해 WHERE 를 무시했다.
- M3 을 넣은 표는 NULL 비교가 조건을 만족한다고 오해했다.
- M4 합계를 NULL 로 둔 표는 SUM 이 NULL 을 하나라도 만나면 NULL 이 된다고 봤다.
오류나 개정된 내용이 보이면 알려주세요