문제
사원 테이블에 데이터가 있더라도 WHERE 1=2 조건으로 인해 대상 행이 하나도 없을 때, 다음 각 SQL의 실행 결과 중 나머지 셋과 다른 값을 반환하는 것은?
① SELECT SUM(급여) FROM 사원 WHERE 1=2; ② SELECT AVG(급여) FROM 사원 WHERE 1=2; ③ SELECT MAX(급여) FROM 사원 WHERE 1=2; ④ SELECT COUNT(*) FROM 사원 WHERE 1=2;
정답
4번
해설
집계함수는 대상 행이 하나도 없어도 항상 한 행을 반환한다. SUM·AVG·MAX·MIN은 빈 집합에 대해 NULL을 반환하지만, COUNT(*)는 행 개수를 세므로 0을 반환한다. 따라서 ①②③은 모두 NULL, ④만 0으로 값이 다르다. NVL(SUM(급여),0)처럼 감싸지 않는 한 SUM 등은 0이 아니라 NULL임에 유의한다.