버킷 단위 요약
GROUP BY 가 row 들을 컬럼(들) 로 버킷 분할; 집계가 버킷마다 돌아. HAVING 이 집계 후 버킷을 필터 (WHERE 와 대조 — WHERE 는 집계 전 row 필터).
연산 순서 멘탈 모델:
FROM+ join 이 후보 row 모음.WHERE가 그 row 필터.GROUP BY가 살아남은 row 를 버킷으로 분할.- 집계가 버킷마다 한 값 계산.
HAVING이 버킷 필터.SELECT가 컬럼/표현식 projection.ORDER BY+LIMIT마무리.
Warning: Postgres 는 SELECT 컬럼 일부만 GROUP BY 하면 에러. SQLite 는 통과시키고 미집계 컬럼에 임의 값 골라 — MySQL 5.7 이전 같은 함정. 항상 모든 미집계 SELECT 컬럼을 GROUP BY 에 포함하거나 집계로 감싸.