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

在oracle中使用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的错误。

关于oracle的having 关键字有一点要说明就是不可以是在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

   
上一篇:Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分


下一篇:Hive教程(03)- Hive数据模型