在oracle中使用having关键字来限制你的分组结果

简介: 前面我们介绍了,使用oracle的聚合函数和group by关键字来对结果集合进行分组,这时就有了一个新的问题,例如,我们针对聚合函数那一列需要找到满足条件的那些分组结果。我们可以使用where子句吗?不行,我们需要的是使用having关键字。

前面我们介绍了,使用oracle的聚合函数和group by关键字来对结果集合进行分组,这时就有了一个新的问题,例如,我们针对聚合函数那一列需要找到满足条件的那些分组结果。我们可以使用where子句吗?不行,我们需要的是使用having关键字。

例如我们需要找出那些平均工资在$2000以上的部门。使用having关键字的写法是:

Select deptno,avg(sal) avg_sal

From emp

Group by deptno

Having avg(sal) > 2000;

这样就可求出正确的结果

如果你使用的是

Select deptno,avg(sal) avg_sal

From emp

Group by deptno

where avg(sal) > 2000;

将会出现ORA-00934的错误。

关于oraclehaving 关键字有一点要说明就是不可以是在having 使用聚合函数的别名,例如

Select deptno,avg(sal) avg_sal

From emp

Group by deptno

Having avg_sal > 2000;

将会出现:ORA-00904: “AVG_SAL”: 无效的标识符的错误。

当然having关键词只能用在处理聚合函数的结果,不可以用在普通列中。

前面给出的例子的结果:

SQL> Select deptno,avg(sal) avg_sal

2 From emp

3 Group by deptno

4 Having avg(sal) > 2000;

 

DEPTNO AVG_SAL

———- ———-

10 2916.66667

20 2235

目录
相关文章
|
8月前
|
SQL Oracle 关系型数据库
Oracle分组取最大值
Oracle分组取最大值
|
5月前
|
SQL Oracle 关系型数据库
Oracle之Fetch关键字的使用
Oracle之Fetch关键字的使用
73 1
|
8月前
|
SQL Oracle 关系型数据库
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
|
Oracle 关系型数据库 MySQL
mycat链接oracle报错 未找到from关键字
mycat链接oracle报错 未找到from关键字
mycat链接oracle报错 未找到from关键字
|
SQL Oracle 关系型数据库
Oracle 按照每小时分组,求每组数量
Oracle 按照每小时分组,求每组数量
Oracle 按照每小时分组,求每组数量
|
Oracle 关系型数据库 数据库
[20171218]字段命名与oracle关键字.txt
[20171218]字段命名与oracle关键字.txt --//再次提醒开发应该在数据库字段命令上避开oracle关键字(保留字).避免出现混乱. SCOTT@book> @ &r/ver1 PORT_STRING         ...
926 0