Aggregate Functions & Grouping

HAVING Clause: Mistakes

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

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