Topics

WHERE filters individual rows before grouping; HAVING filters groups after aggregation.

SELECT department, COUNT(*)
FROM employees
WHERE salary > 40000
GROUP BY department
HAVING COUNT(*) > 5;

Here, WHERE filters high earners; HAVING ensures groups have more than 5 employees.