predicates in the having clause are applied after the formation of the group by

GROUP BY

-- 按部门分组,计算每个部门的平均工资
SELECT dept, AVG(salary)
FROM employees
GROUP BY dept;

HAVING

-- 找出平均工资大于 5000 的部门
SELECT dept, AVG(salary) AS avg_salary
FROM employees
GROUP BY dept
HAVING AVG(salary) > 5000;

WHERE vs HAVING

SELECT dept, COUNT(*) AS emp_count
FROM employees
WHERE salary > 3000          -- 先过滤掉工资低的员工
GROUP BY dept
HAVING COUNT(*) >= 10;       -- 再过滤掉人数不足 10 的部门