행을 summary 로 collapse
GROUP BY 가 steamroller — 행을 그룹으로 collapse, 각 그룹에 aggregate (COUNT, SUM, AVG, MIN, MAX) 실행. 개별 행 정체성 잃음; summary 얻음.
엄격한 룰
SELECT 의 모든 컬럼이 GROUP BY 에 있거나 또는 aggregate 안에 있어야. PostgreSQL 이 엄격히 강제 — MySQL 과 다르게, 거긴 random 값 조용히 고름 (그리고 틀림). 엄격함이 feature; 결과의 각 행이 실제로 뭐 의미하는지 생각하게 강제.
시간 버킷팅 위한 DATE_TRUNC
시계열 집계엔 DATE_TRUNC('day', timestamp_col) 가 각 timestamp 를 그 날 시작으로 truncate (또는 week/month/hour/minute). truncated 값으로 group by → 깨끗한 버킷.