select * from dept
where deptno=
(select e.d from(
select deptno d,avg(nvl(sal,0)) a,row_number() over(order by avg(nvl(sal,0)) desc) r from emp group by deptno ) e
where e.r=1) ;
用到的表emp、dept,這樣寫可以出來結果,感覺有點low,正在學習oracle,看大蝦有沒有更簡潔的方法。
uj5u.com熱心網友回復:
lower也不算lower,只是如果多個部門并列最高的時候不知道 你這sql符合要求否uj5u.com熱心網友回復:
試試這個,手機打字,沒有驗證:
select a.*
from dept a,
(select deptno,row_number()over(order by avg(nvl(sal,0)) desc) rn from emp)b
where a.deptno = b.deptno
and b.rn = 1
uj5u.com熱心網友回復:
也可以這樣:select * from dept
where deptno=
(select e.d from(
select deptno d from emp group by deptno order by avg(nvl(sal,0)) desc) e
where rownum=1) ;
但感覺都差不多了,一個是用row_number(),一個沒用row_number()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/77948.html
標籤:基礎和管理
