다음 SQL의 실행 결과로 옳은 것은?[대출]대출번호회원번호도서번호반납… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
다음 SQL의 실행 결과로 옳은 것은?[대출]
| 대출번호 | 회원번호 | 도서번호 | 반납일 |
|---|---|---|---|
| 1 | M01 | B1 | 2026-03-05 |
| 2 | M01 | B2 | (null) |
| 3 | M02 | B3 | 2026-03-07 |
| 4 | M02 | B1 | 2026-03-10 |
| 5 | M03 | B4 | (null) |
| 6 | M03 | B2 | (null) |
| 7 | M01 | B5 | 2026-03-12 |
| 8 | M02 | B6 | 2026-03-15 |
SELECT 회원번호, COUNT(*) AS 반납수 FROM 대출 WHERE 반납일 IS NOT NULL GROUP BY 회원번호 ORDER BY 반납수 DESC, 회원번호;
1
| 회원번호 | 반납수 |
|---|---|
| M01 | 2 |
| M02 | 3 |
2
| 회원번호 | 반납수 |
|---|---|
| M02 | 3 |
| M01 | 2 |
3
| 회원번호 | 반납수 |
|---|---|
| M02 | 3 |
| M01 | 2 |
| M03 | 0 |
4
| 회원번호 | 반납수 |
|---|---|
| M01 | 3 |
| M02 | 3 |
| M03 | 2 |
해설
논리적 처리 순서는 FROM → WHERE → GROUP BY → SELECT → ORDER BY 이므로, 반납일이 있는 행만 먼저 남긴 뒤 회원별로 세어 M02 3건, M01 2건이 된다.
반납 행이 하나도 없는 M03 은 WHERE 에서 모두 걸러져 그룹 자체가 생기지 않고, ORDER BY 는 SELECT 다음이라 별칭 반납수로 내림차순 정렬된다.
- M01 3건·M03 2건이 보이는 표는 WHERE 를 적용하지 않은 결과다.
- M01 이 먼저 나온 표는 반납수를 오름차순으로 정렬했다.
- M03 0건 행은 걸러진 그룹이 0건으로 남는다고 오해한 것이다.
오류나 개정된 내용이 보이면 알려주세요