문제
다음 테이블에서 SQL 실행 결과는?
SQL[PRODUCT] ID: 100, 200, 300 [ORDER_ITEM] PRODUCT_ID: 100, 100, 200 SELECT P.ID, COUNT(O.PRODUCT_ID) FROM PRODUCT P LEFT JOIN ORDER_ITEM O ON P.ID = O.PRODUCT_ID GROUP BY P.ID;
① 3행 - (100,2), (200,1), (300,0) ② 3행 - (100,2), (200,1), (300,1) ③ 2행 - (100,2), (200,1) ④ 4행 - (100,1), (100,1), (200,1), (300,0)
정답
1번
해설
LEFT JOIN으로 PRODUCT의 모든 행이 포함되고, GROUP BY로 묶입니다. ID 100은 ORDER_ITEM에 2번 매칭되어 COUNT=2, ID 200은 1번 매칭되어 COUNT=1, ID 300은 매칭되지 않아 COUNT=0입니다. COUNT 함수는 NULL을 제외하므로 매칭되지 않은 행은 0으로 집계됩니다.