找出那些工资高于他们所在部门的平均工资的员工
http://www.cnblogs.com/zhangzhu/archive/2012/05/10/2494978.html
一個SQL實現薪水大于所在部門平均薪水的員工
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)
查詢結果:
1? ?? ?? ? 張三? ?? ?? ?? ???1? ?? ?? ?? ?2500
3? ?? ?? ? 王二? ?? ?? ?? ???2? ?? ?? ?? ?2600
?
補充:
今天在跟同事交流的時候,發現昨天少考慮了一樣東西,性能。
這個問題還有一種解決方式,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(測試通過)
現在來分析這兩種寫法的差別在哪。第一種寫法看似更簡捷,語句少了不少,第二種似乎更麻煩。其實不然,第一種寫法是比第二種效率更低,為什么。原因就在于 emp中員工每次比較薪水時,都會計算一次該員工所屬部門的平均薪水,這樣emp中有4條記錄,就會計算4次。而第二種方式只計算一次部門的評價薪水。如 果表中數據量比較大,對性能的影響會更明顯,所以第二種方式更佳。
總結
以上是生活随笔為你收集整理的找出那些工资高于他们所在部门的平均工资的员工的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 惠安高考状元2021成绩查询,2021年
- 下一篇: VBA打开文件夹所有EXCEL并按需操作