IntermediateGROUP BY & Aggregation

HAVING: departments with budget over 1 million

The query

SQL
SELECT
  d.dept_name,
  d.budget,
  COUNT(e.emp_id) AS employees,
  SUM(e.salary) AS salary_cost
FROM departments d
LEFT JOIN employees e ON d.dept_id = e.dept_id
GROUP BY d.dept_id, d.dept_name, d.budget
HAVING d.budget > 1000000
ORDER BY d.budget DESC;
Tested against PostgreSQL 16

Note

HAVING can filter on both aggregate functions AND non-aggregated grouped columns.

Tables referenced