在 SQL 中,HAVING 子句用于过滤满足特定条件的分组结果。CASE 语句用于根据特定条件返回不同的值。在 HAVING 子句中使用 CASE 语句可以实现更复杂的过滤条件。
以下是一个使用 HAVING 子句中的 CASE 语句的示例:
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > (
SELECT AVG(salary)
FROM employees
WHERE department = 'IT'
)
在这个示例中,我们首先按部门分组并计算每个部门的平均工资。然后,我们使用 HAVING 子句过滤出平均工资高于 IT 部门平均工资的部门。
现在,我们可以在 HAVING 子句中使用 CASE 语句来实现更复杂的过滤条件。例如,我们可以根据部门的不同平均工资阈值过滤部门:
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > (
CASE department
WHEN 'IT' THEN 80000
WHEN 'HR' THEN 70000
ELSE 60000
END
)
在这个示例中,我们使用 CASE 语句为不同的部门设置不同的平均工资阈值。对于 IT 部门,我们要求平均工资高于 80000;对于 HR 部门,我们要求平均工资高于 70000;对于其他部门,我们要求平均工资高于 60000。
总之,在 SQL 中,我们可以在 HAVING 子句中使用 CASE 语句来实现更复杂的过滤条件。这可以帮助我们更灵活地处理不同的查询需求。
领取专属 10元无门槛券
手把手带您无忧上云