這句話,我裂開了。
部門表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進行分組。
這樣成了,每個部門號裏面都有全部的職員信息了。