문제
다음 [올림픽메달] 테이블에 대해 아래 SQL을 실행한 결과로 옳은 것은?
| 선수 | 국가 | 메달 |
|---|---|---|
| 김하나 | KOR | 골드 |
| 이두리 | KOR | 실버 |
| 박세찬 | KOR | 실버 |
| 정오름 | USA | 골드 |
| 최네오 | USA | 브론즈 |
① 골드 1, 실버 2, 브론즈 1 ② 골드 1, 실버 2 ③ 골드 1, 실버 1, 브론즈 1 ④ 실버 2, 브론즈 1
정답
2번
해설
WHERE 국가='KOR' 로 먼저 행을 걸러내면 대상은 (김하나-골드, 이두리-실버, 박세찬-실버) 3건이다. 이를 메달로 GROUP BY 하면 '골드' 그룹 1건, '실버' 그룹 2건이 되어 결과는 골드 1, 실버 2 두 행이다. → 정답 ②. ① 브론즈는 KOR 데이터에 없으므로 나타날 수 없다. ③ 실버는 2건이므로 1이 아니다. ④ 브론즈가 KOR에 없어 오답. GROUP BY 는 WHERE 로 필터링된 행에 대해서만 그룹을 만들며, 그룹 함수 COUNT(*)는 각 그룹의 행 수를 센다는 점이 핵심이다.