문제
업체 테이블의 물품 컬럼에는 'p'가 30건, 'q'가 40건, 'r'이 50건 저장되어 있다(총 120건, NULL 없음). 다음 두 쿼리의 실행 결과로 옳은 것은?
① 3, 0 ② 3, 30 ③ 3, 오류가 발생한다. ④ 3, NULL
정답
2번
해설
정답: 2. 물품의 서로 다른 값은 p, q, r 3개이므로 COUNT(DISTINCT 물품)=3이다. IN ('p', NULL)은 물품='p'인 행만 TRUE가 되고(NULL과의 비교는 UNKNOWN이라 무시됨), 'p'는 30건이므로 COUNT(*)=30이다.
오답 풀이
- 1번: 'p'에 일치하는 행이 30건 존재하므로 0이 아니다.
- 2번: DISTINCT 물품 3개, 'p'인 행 30건으로 옳다.
- 3번: IN 목록에 NULL이 있어도 문법 오류는 아니다.
- 4번: COUNT(*)는 조건을 만족하는 행 수를 반환하며 NULL을 반환하지 않는다.