문제
다음 중 아래의 <급여> 테이블에 대한 SQL 명령과 실행 결과로 옳지 않은 것은? (단, 빈 칸은 Null 임)
| 사원번호 | 성명 | 가족수 |
|---|---|---|
| 1 | 가 | 2 |
| 2 | 나 | 4 |
| 3 | 다 |
① SELECT COUNT(성명) FROM 급여; 를 실행한 결과는 3이다. ② SELECT COUNT(가족수) FROM 급여; 를 실행한 결과는 3이다. ③ SELECT COUNT() FROM 급여; 를 실행한 결과는 3이다. ④ SELECT COUNT() FROM 급여 WHERE 가족수 Is Null;을 실행한 결과는 1이다.
정답
2번
해설
정답: 2. COUNT(열)은 해당 열에서 Null이 아닌 값의 개수만 센다. 가족수 열은 3행이 Null이므로 COUNT(가족수)의 결과는 3이 아니라 2이다.
오답 풀이
- 1번: 성명 열에는 Null이 없어 COUNT(성명)=3이므로 옳다.
- 2번: 가족수 열에 Null이 하나 있어 COUNT(가족수)=2이므로 "3"은 틀리다.
- 3번: COUNT(*)는 Null 포함 전체 행을 세므로 3이 되어 옳다.
- 4번: 가족수가 Null인 행은 1개이므로 결과 1이 옳다.
보충 개념 COUNT(*)는 Null을 포함한 모든 행을 세지만, COUNT(열)은 그 열에서 Null이 아닌 값만 센다. 이 차이가 집계 결과를 가른다.