找出那些工资高于他们所在部门的平均工资的员工
http://www.cnblogs.com/zhangzhu/archive/2012/05/10/2494978.html
一個(gè)SQL實(shí)現(xiàn)薪水大于所在部門(mén)平均薪水的員工
id? ? empName? ? DeptId? ? empSalary
1? ?? ?? ? 張三? ?? ?? ?? ???1? ?? ?? ?? ?2500
2? ?? ?? ? 李四? ?? ?? ?? ???1? ?? ?? ?? ?2400
3? ?? ?? ? 王二? ?? ?? ?? ???2? ?? ?? ?? ?2600
4? ?? ?? ? 麻子? ?? ?? ?? ???2? ?? ?? ?? ?2500
select * from emp e1 where e1.empSalary > (select avg(empSalary) from emp e2 where e1.DeptId = e2.DeptId)
查詢結(jié)果:
1? ?? ?? ? 張三? ?? ?? ?? ???1? ?? ?? ?? ?2500
3? ?? ?? ? 王二? ?? ?? ?? ???2? ?? ?? ?? ?2600
?
補(bǔ)充:
今天在跟同事交流的時(shí)候,發(fā)現(xiàn)昨天少考慮了一樣?xùn)|西,性能。
這個(gè)問(wèn)題還有一種解決方式,SQL如下:
select??e1.*?
from emp e1 ,(select DeptId,avg(empSalary) as deptSalary from emp group by DeptId) as e2?
where e1.DeptId = e2.DeptId and e1.empSalary > e2.deptSalary(測(cè)試通過(guò))
現(xiàn)在來(lái)分析這兩種寫(xiě)法的差別在哪。第一種寫(xiě)法看似更簡(jiǎn)捷,語(yǔ)句少了不少,第二種似乎更麻煩。其實(shí)不然,第一種寫(xiě)法是比第二種效率更低,為什么。原因就在于 emp中員工每次比較薪水時(shí),都會(huì)計(jì)算一次該員工所屬部門(mén)的平均薪水,這樣emp中有4條記錄,就會(huì)計(jì)算4次。而第二種方式只計(jì)算一次部門(mén)的評(píng)價(jià)薪水。如 果表中數(shù)據(jù)量比較大,對(duì)性能的影響會(huì)更明顯,所以第二種方式更佳。
總結(jié)
以上是生活随笔為你收集整理的找出那些工资高于他们所在部门的平均工资的员工的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 惠安高考状元2021成绩查询,2021年
- 下一篇: VBA打开文件夹所有EXCEL并按需操作