HAVING Clause: Mistakes
Module: Aggregate Functions & Grouping
SELECT department, COUNT(*) FROM employees HAVING salary > 50000 GROUP BY department;
SELECT department, COUNT(*) FROM employees WHERE salary > 50000 GROUP BY department;
salary > 50000 filters individual rows, so use WHERE before GROUP BY.
WHERE for row filters, HAVING for group filters
High
Use WHERE for row-level conditions, not HAVING
SELECT department, COUNT(*) FROM employees WHERE COUNT(*) > 10 GROUP BY department;
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10;
COUNT(*) is an aggregate function, must use HAVING after GROUP BY.
Aggregates only allowed in HAVING, not WHERE
High
Cannot use aggregates in WHERE clause