Aggregate
COUNT(*)의 함정
LEFT JOIN 뒤의 NULL 보존 행도 행은 행입니다. COUNT(*)는 그 한 줄까지 세어 버립니다.
보존 행
실제 주문
COUNT(*) 함정
회원
order_id
COUNT(*)
김철수
1
1
김철수
2
1
박민수
NULL
1로 계산
잘못된 집계
주문 없는 회원도 1건
COUNT(*)는 그룹 안의 행 수를 세므로 NULL로 채워진 보존 행까지 포함합니다.
SELECT u.username, COUNT(*) AS order_count FROM users u LEFT JOIN orders o ON u.user_id = o.user_id GROUP BY u.username;