문제
아래 SQL의 결과로 알맞은 것은?
SQLSELECT COUNT(*) + COUNT(col1) + COUNT(DISTINCT col2) AS RESULT FROM T;
<조건>
- 전체 행 수는 5건이다.
- col1이 NULL이 아닌 행 수는 3건이다.
- col2의 중복 제거 후 NULL이 아닌 값의 수는 2건이다.
① 5 ② 8 ③ 10 ④ 12
정답
3번
해설
정답: 3. COUNT(*)는 5, COUNT(col1)은 3, COUNT(DISTINCT col2)는 2이므로 합계는 10이다.
오답 풀이
- 1번: COUNT(*)만 계산한 값이다.
- 2번: COUNT(DISTINCT col2)를 누락한 값이다.
- 3번: 5 + 3 + 2 = 10으로 맞다.
- 4번: NULL 또는 중복 값을 잘못 포함한 값이다.
보충 개념 COUNT(*)는 전체 행 수를 센다. COUNT(컬럼)은 NULL이 아닌 값만 세고, COUNT(DISTINCT 컬럼)은 NULL을 제외하고 중복을 제거한 개수를 센다.