查詢出每個部門比本部門平均工資高的職工人數

這句話,我裂開了。

部門表dept如下:
在這裏插入圖片描述
員工表emp如下:
在這裏插入圖片描述

我感覺有兩種理解。

1.找出部門內,工資高於平均工資的員工數

with temp(avg_sal,deptno)
as (select avg(sal) avg_sal,deptno from emp group by deptno)

select deptno,count(empno)
from emp natural join temp
where sal>avg_sal
group by deptno;

2.找出所有的部門比本部門平均工資高的員工數

比如有3個部門。部門1的平均工資是100,本部門有3人高於100。部門2有3個人工資高於100,部門3有2個人工資高於100, 所以要輸出 :

deptno nums
部門1 3+3+2=8人

with temp(avg_sal,deptno)
as (select avg(sal) avg_sal,deptno from emp group by deptno)

select temp.deptno,count(empno)
from emp,temp
where sal>avg_sal
group by temp.deptno;

先笛卡爾積,後用temp.deptno進行分組。
這樣成了,每個部門號裏面都有全部的職員信息了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章