문제
다음 테이블 상황에서 SQL 실행 결과로 올바른 것은?
[부서] DEPT_ID: 10, 20, 30 [직원] EMP_ID: 1,2,3 DEPT_ID: 10,10,40
SQLSELECT D.DEPT_ID, COUNT(E.EMP_ID) FROM DEPT D LEFT JOIN EMP E ON D.DEPT_ID = E.DEPT_ID GROUP BY D.DEPT_ID;
① 10:2, 20:0, 30:0 (3건) ② 10:2, 20:1, 30:1 (3건) ③ 10:2 (1건) ④ 10:2, 40:1 (2건)
정답
1번
해설
LEFT JOIN으로 DEPT의 모든 행이 포함되고, COUNT(E.EMP_ID)는 NULL을 제외하고 카운트한다. 부서 10은 직원 2명과 매칭되어 2, 부서 20과 30은 매칭되는 직원이 없어 E.EMP_ID가 NULL이므로 COUNT 결과는 0이 된다. ② COUNT(*)와 혼동한 경우. ③ GROUP BY를 무시한 경우. ④ INNER JOIN 결과와 혼동한 경우.