我的查询不止一次给我一个"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