在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的错误。

关于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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzhdim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值