문제
다음 중 주어진 [Customer] 테이블을 참조하여 아래의 SQL문을 실행한 결과로 옳은 것은?
| City | Age | Hobby |
|---|---|---|
| 부산 | 30 | 축구 |
| 서울 | 26 | 영화감상 |
| 부산 | 45 | 낚시 |
| 서울 | 25 | 야구 |
| 대전 | 21 | 축구 |
| 서울 | 19 | 음악감상 |
| 광주 | 19 | 여행 |
| 서울 | 38 | 야구 |
| 인천 | 53 | 배구 |
① 3 ② 5 ③ 7 ④ 9
정답
2번
해설
정답: 2. 안쪽 쿼리 SELECT Distinct City는 중복을 제거한 City 목록(부산·서울·대전·광주·인천)을 만든다. 바깥의 Count(*)는 그 행 수를 세므로 결과는 5이다.
오답 풀이
- 1번: 3은 실제 서로 다른 도시 수(5)보다 적다.
- 2번: 부산·서울·대전·광주·인천으로 5개이므로 옳다.
- 3번: 7은 도시 수가 아니다.
- 4번: 9는 중복을 제거하지 않은 전체 레코드 수이다.
보충 개념 DISTINCT는 중복 행을 제거하고, COUNT(*)는 (중복 제거 후) 행의 개수를 센다. 서브쿼리(인라인 뷰)의 결과를 다시 집계하는 형태이다.