🐘 PostgreSQL
Beginner
What is the difference between WHERE and HAVING?
Answer
WHERE filters individual rows before grouping — it cannot reference aggregate functions. HAVING filters groups after GROUP BY is applied — it can reference aggregate functions. Example: SELECT department, COUNT(*) FROM employees WHERE salary > 50000 GROUP BY department HAVING COUNT(*) > 5; — WHERE filters individual employees with salary > 50k; HAVING then filters departments with more than 5 such employees. Using an aggregate in WHERE causes an error; use HAVING instead. For performance, always prefer WHERE to filter rows as early as possible (before grouping), and use HAVING only when filtering on aggregated results is necessary.