我如何找到薪水高于每个员工的平均薪水

时间:2019-06-06 00:58:49

标签: sql sql-server ssms

我想从我的表中查看行,这些行的薪水高于每个工作人员的平均薪水。下面的代码给了我一个错误:

  

操作数数据类型varchar对avg运算符无效。

SELECT StaffID, StaffName, LEFT(StaffGender, 1)  AS [Staff Gender], 
'Rp. ' + CAST ((StaffSalary)AS VARCHAR) [Staff Salary]
FROM MsStaff
WHERE StaffName Like '% %' AND StaffSalary > AVG(StaffSalary)

更新: 我已将StaffSalary列更改为INT数据类型,但又遇到另一个错误:

  

第147条消息,第15级,状态1,第48行
  除非聚集在HAVING子句或选择列表中包含的子查询中,否则聚集可能不会出现在WHERE子句中,并且正在聚集的列是外部引用。“

Data sample

2 个答案:

答案 0 :(得分:1)

尽管这似乎很有意义,但是您不能像这样使用AVG()
使用子查询来找到平均值:

SELECT ...
FROM MsStaff
WHERE StaffName Like '% %'
AND StaffSalary > (SELECT AVG(StaffSalary) FROM MsStaff)

答案 1 :(得分:0)

select * from MsStaff where StaffSalary > (select avg(StaffSalary) from MsStaff)