여러 행을 한 요약으로 접어
GROUP BY는 같은 키의 행을 묶고 COUNT, SUM, AVG, MIN, MAX가 묶음마다 한 값을 계산하게 해. 전체 합계 1개가 필요한지, 고객별·날짜별 합계가 필요한지 결과의 단위를 먼저 정해.
선택한 일반 열은 그룹의 의미와 맞아야 해
집계하지 않은 열은 GROUP BY에 들어가거나 그룹 키에 의해 하나로 결정되어야 해. PostgreSQL은 기본 키의 함수 종속성을 알아 SELECT u.email, COUNT(*) FROM users u GROUP BY u.id 같은 질의를 허용할 수 있어. 그래도 독자가 결과 단위를 바로 이해하도록 쓰는 게 중요해.
시간을 원하는 단위로 묶어
DATE_TRUNC('day', timestamp_col)로 일 단위를 만들고, 필요하면 월·분기 단위로 바꿔. 문자열 열을 억지로 MIN(email)이나 MAX(email)로 통과시키지 마. 시간 범위를 좁힐 수 있다면 WHERE로 먼저 줄여. PostgreSQL은 그룹화 규칙을 엄격히 검사해. MySQL의 느슨한 그룹화 설정처럼 그룹마다 임의의 값을 고르는 동작과는 달라.