我需要找到收入最高的员工,他们每个公司的平均工资都要高

  • 本文关键字:他们 公司 平均工资 sql
  • 更新时间 :
  • 英文 :


我的查询不止一次给我一个"company_name"。我试图区分它,但无法

SELECT employee_name,company_name, AVG(salary) as 'Average'
FROM works
GROUP BY employee_name,company_name 
HAVING AVG(salary) > (SELECT AVG(salary) FROM works)

不要在HAVING中应用您的条件,而是从它开始。你想要每个公司的平均工资,对吗?因此,如果你的数据代表20家公司,你希望他们各自公司的每个员工的工资都高于该公司的平均水平。因此,我首先得到了每家公司的平均工资,然后回到工作岗位,只抓那些自己的工资高于每家公司平均工资的员工。

select
PreAvg.Company_Name,
PreAvg.compAvgSalary,
w.Employee_Name,
w.Salary
from
( select company_name, Avg( salary ) compAvgSalary
from works
group by company_name ) PreAvg
JOIN Works w
on PreAvg.Company_Name = w.Company_Name
AND w.Salary = PreAvg.compAvgSalary

如果你正在寻找每家公司的最高工资,那会略有不同。选择每个公司的最高工资,然后只获取该公司拥有该工资的员工。同样,类似的查询。

select
PreMax.Company_Name,
PreMax.compMaxSalary,
w.Employee_Name,
w.Salary
from
( select company_name, max( salary ) compMaxSalary
from works
group by company_name ) PreMax
JOIN Works w
on PreMax.Company_Name = w.Company_Name
AND w.Salary = PreMax.compMaxSalary

相关内容

最新更新