문제
아래 SQL 결과로 알맞은 것은?
| 나이_그룹 | 나이 |
|---|---|
| 1 | 10 |
| 1 | 10 |
| 2 | 20 |
| 2 | 20 |
| 3 | 30 |
| 3 | 30 |
| 3 | NULL |
SQLSELECT AVG(나이) AS 평균_나이 FROM TAB GROUP BY 나이_그룹;
① 10, 20, 25 ② 10, 20, NULL ③ 10, 20, 30 ④ 10, 20, 20
정답
3번
해설
정답: 3. AVG는 NULL을 제외하고 평균을 계산하므로 그룹 1은 10, 그룹 2는 20, 그룹 3은 30이다.
오답 풀이
- 1번: NULL을 0으로 포함하여 평균을 낸 값과 혼동한 것이다.
- 2번: 그룹 3에는 NULL이 아닌 30 값이 있으므로 NULL이 아니다.
- 3번: NULL을 제외한 평균 계산 결과이다.
- 4번: 그룹 3의 평균을 잘못 계산했다.
보충 개념 AVG, SUM, MIN, MAX 등 대부분의 집계 함수는 NULL을 제외한다. COUNT(*)는 NULL 여부와 관계없이 행 수를 센다.