WHERE vs HAVING
HAVING filters after aggregate facts exist.
HAVING decides group by group after aggregate facts are ready.
HAVING keeps 1 group and drops 2 groups in this threshold example.
HAVING examples are tiny finite group-filter transforms; SQL dialect completeness, optimizer behavior, indexing, and product claims are out of scope.
The final output rows are grouped rows, not original source rows.
HAVING is the group boundary.