Oracle 数据库使用 HAVING
子句来过滤分组结果。 通常,GROUP BY
子句用于方便使用聚合函数,例如 SUM()
、AVG()
、、等与使用 COUNT( )
) 应用于分组数据,并对结果执行进一步的条件过滤器。
以下是使用HAVING
子句进行数据过滤的基本示例。
SELECT 部门 ID,SUM(工资)AStotal_salary
FROM 员工
组 BY 部门 ID
拥有 SUM(工资) > 5000;
pre>
此示例以 empl 开头选择 oyees
表的 Department_id
和 salary
列,并使用 GROUP BY
子句 I 将它们按 Department_id 配对。会成功的。
结果被分组。 接下来,使用 HAVING
子句排除工资总额大于 5,000 的部门。
请注意,HAVING
子句中的条件是针对聚合函数的结果,而不是针对原始数据。 也就是说,非聚合列不能在 HAVING
子句中直接引用,除非它们也包含在 GROUP BY
子句中。 例如,以下查询将无法正确运行,因为 salary
列不在 GROUP BY
子句中。
选择部门 ID,薪资
FROM 员工
组 BY 部门 ID
有工资 工资 5000; -- HAVING 无法引用非聚合列,从而导致错误。
要解决此问题,请将 salary
列包含在 GROUP BY
中,您可以还。 In 子句:
SELECT 部门 ID,工资
FROM 员工
GROUP BY 部门 ID,薪资
我有工资> 5000;这是正确的,因为 class=" hljs-comment">--HAVING 引用的列也包含在 GROUP BY
中。 简短的 HAVING
子句用于过滤 Oracle 数据库中的分组结果。 这允许您使用聚合函数并对这些函数的结果应用条件。 使用 HAVING
子句时,必须小心您的目标是聚合函数的结果。 此外,如果您需要引用非聚合列,则必须将这些列包含在 GROUP BY 子句。
以上内容来自互联网,不代表本站全部观点。 欢迎关注:zhujipindao.com
评论前必须登录!
注册