대출 테이블에 대해 다음 SQL 을 실행한 결과로 옳은 것은?대출대출번… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 2회
대출 테이블에 대해 다음 SQL 을 실행한 결과로 옳은 것은?대출
| 대출번호 | 회원번호 | 연체일 | 반납일 |
|---|---|---|---|
| 1 | 11 | 0 | 2026-03-10 |
| 2 | 12 | 35 | 2026-03-20 |
| 3 | 13 | 10 | (null) |
| 4 | 11 | (null) | (null) |
| 5 | 14 | 25 | (null) |
SELECT COUNT(*) AS CNT, SUM(연체일) AS S, MAX(연체일) AS M FROM 대출 WHERE 반납일 IS NULL AND 연체일 > 30;
1
| CNT | S | M |
|---|---|---|
| 0 | 0 | 0 |
2
| CNT | S | M |
|---|---|---|
| 1 | 35 | 35 |
3
| CNT | S | M |
|---|---|---|
| 0 | (null) | (null) |
4
| CNT | S | M |
|---|
해설
GROUP BY 가 없는 집계 쿼리는 조건을 만족하는 행이 없어도 항상 한 행을 돌려주며, 이때 COUNT(*)는 0, SUM·MAX 는 NULL이다.
반납일이 NULL 인 대출은 연체일이 10, NULL, 25뿐이라 30 초과가 없고, 연체일 35인 대출은 이미 반납되어 WHERE 에서 제외된다.
- 결과 행이 없다고 본 것은 GROUP BY 가 있을 때의 동작과 혼동한 것이다.
- SUM·MAX 를 0으로 본 것은 빈 집합의 집계가 NULL 이라는 점을 놓쳤다.
- 연체일 35인 행을 센 것은 반납일 조건을 빠뜨린 것이다.
오류나 개정된 내용이 보이면 알려주세요