Skip to main content

HAVING 子句

HAVING 子句是可选的,用于排除不满足给定条件的组行。HAVING 类似于 WHERE 子句,但 WHERE 在分组之前出现,而 HAVING 在分组之后出现。

这意味着 WHERE 子句可对所选列设置条件,而 HAVING 子句可对由 GROUP BY 子句创建的组设置条件。

以下示例展示了 HAVING 子句在 SELECT 查询中的位置:

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

HAVING 子句的基本示例:

-- 计算每个部门每个职务的平均工资
-- 筛选结果集,仅包含平均工资至少为 50000 美元的部门和职务
SELECT department, job_title, AVG(salary)
FROM employees
GROUP BY department, job_title
HAVING AVG(salary) >= 50000;

查询结果是一个包含部门、职务和平均工资列的表。每一行表示某部门某职务的平均工资,并且只返回那些平均工资超过 50000 美元的组。