| 以下的文章,主要为大家在实际工作中提供一种解决方法。
 ---用户名:scott
 ---密  码:tiger
 ---*********Oracle表连接与子查询示例************
 ---求部门中哪些人的薪水最高
 select ename,sal from emp  join (selectmax(sal) max_sal, deptno from emp group
 by deptno) t
on (emp.sal = t.max_sal and emp.deptno = t.deptno);  ---求部门平均薪水的等级
 select deptno,avg_sal,grade from
 (select deptno,avg(sal) avg_sal from emp groupby deptno) t
join salgrade s on (t.avg_sal between s.losal and s.hisal);  ---求部门平均的薪水等级
 select deptno,avg(grade) from
 (select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal)) t  groupby deptno;
 ---雇员中哪些人是经理人
 select ename from emp where empno in (selectdistinct mgr from  emp);
 ---不用组函数,求薪水的最高值
 select sal from emp where sal notin
 
 (selectdistinct e1.sal from emp e1 join emp e2 on (e1.sal < e2.sal));
 ---用组函数,求薪水的最高值
 selectmax(sal) from emp;
 ---求平均薪水最高的部门的部门编号
 select deptno , avg_sal from
  (selectavg(sal) avg_sal,deptno from emp group
 by deptno) t  where avg_sal =
 (selectmax(avg_sal) from (select
 avg(sal) avg_sal,deptno from emp group
 by deptno) t);
 ----组函数嵌套的写法
 select deptno , avg_sal from
  (selectavg(sal) avg_sal,deptno from emp group
 by deptno) t  where avg_sal =
 (selectmax(avg(sal)) from emp group
 by deptno);
 ---求平均薪水最高的部门的名称
 select dname from dept   where deptno =  (  select deptno from
 (select
 avg(sal) avg_sal,deptno from emp group
 by deptno) t
where avg_sal =   (select
 max(avg_sal) from (select
 avg(sal) avg_sal,deptno from emp group
 by deptno) t)
);  ---求平均薪水的等级最低的部门的部门名称
 selectavg(sal) avg_sal,deptno from emp group
 by deptno
 --部门平均薪水
 selectmin(avg_sal) from
 
 (  selectavg(sal) avg_sal,deptno from emp group
 by deptno
)  --平均工资的最小值
 select avg_sal,deptno from
 (selectavg(sal) avg_sal,deptno from emp group
 by deptno) t  where avg_sal =
(  selectmin(avg_sal) from
 
(  selectavg(sal) avg_sal,deptno from emp group
 by deptno
)  )  --平均工资的最小值及部门编号
 select t.avg_sal,t.deptno,s.grade from
 (selectavg(sal) avg_sal,deptno from emp group
 by deptno) t  join salgrade s on (t.avg_sal between s.losal and s.hisal)
where avg_sal =  (  selectmin(avg_sal) from
 (
selectavg(sal) avg_sal,deptno from emp group
 by deptno  )
)  --平均工资的最小值及部门编号和工资等级
 select d.dname,t.avg_sal,t.deptno,s.grade from
 (selectavg(sal) avg_sal,deptno from emp group
 by deptno) t  join salgrade s on (t.avg_sal between s.losal and s.hisal)
join dept d on (t.deptno = d.deptno)  where avg_sal =  (  selectmin(avg_sal) from
 
(  selectavg(sal) avg_sal,deptno from emp group
 by deptno
)  )  --平均工资的最小值及部门编号和工资等级及部门名称
 ----Another 按照题意的写法
 select t1.deptno,t1.avg_sal,grade,d.dname from
 (  select deptno,avg_sal,grade from
(select deptno,avg(sal) avg_sal from emp groupby deptno) t  join salgrade s on (t.avg_sal between s.losal and s.hisal)
) t1  join dept d on (t1.deptno = d.deptno)   where grade =  (   selectmin(grade) from
 (
select deptno,avg_sal,grade from(select deptno,avg(sal) avg_sal from emp group
 by deptno) t
join salgrade s on (t.avg_sal between s.losal and s.hisal)  )  );  ---创建视图或者表,假设没有权限
 --已连接。
 grantcreate
 table, create
 view
 to scott;
 --授权成功。
 ---创建视图
 createview v$_dept_avg_sal_info as
 
 select deptno,avg_sal,grade from
 (select deptno,avg(sal) avg_sal from emp group
 by deptno) t
join salgrade s on (t.avg_sal between s.losal and s.hisal);  --视图已建立。
 ---创建这个v$_dept_avg_sal_info视图可以简化上面那个查询的重复代码
 select t1.deptno,t1.avg_sal,grade,d.dname from
 v$_dept_avg_sal_info t1  join dept d on (t1.deptno = d.deptno)   where grade =  (   selectmin(grade) from
 v$_dept_avg_sal_info
);  
 |