首页 > 代码库 > Oracle之分组函数嵌套以及表连接
Oracle之分组函数嵌套以及表连接
--1 数据环境准备
scott 用户下面的emp,dept表
--2 要求 :求平均工资最高的部门编号,部门名称,部门平均工资
select d.deptno,d.dname,e.sal
from(
select avg(sal) sal,deptno
from emp e
group by deptno
having avg(sal) = (select max(avg(sal)) from emp group by deptno))e
left join dept d
on e.deptno=d.deptno;
有人说,红色加粗的一段多此一举,红色部分完全可以写成如下形式
select max(avg(sal)) sal,deptno
from emp e
group by deptno;
但是注意,分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的列名。所以这条语句会直接报错
也就是说,这里用了嵌套分组函数之后,deptno就不能出现列上。
那有人说,我这有写
select max(avg(sal)) sal
from emp e
group by deptno;
这样是不再报错,但是作为关联条件的deptno就没有了。
所以对于有嵌套分组函数的,并且用到表连接的,可以多写一个子查询,子查询里面放的就是嵌套分组函数。
Oracle之分组函数嵌套以及表连接
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。