我如何找到工资高于每个员工的平均工资
How can i find salary is more than the average salary of every staff
我想查看我的 table 中工资高于每位员工平均工资的行。下面的代码给我一个错误:
Operand data type varchar is invalid for avg operator.
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
数据类型,但我收到另一个错误:
Msg 147, Level 15, State 1, Line 48
An aggregate may not appear in the WHERE clause unless it is in a subquery
contained in a HAVING clause or a select list, and the column being aggregated is
an outer reference."
虽然好像有道理,但是不能这么用AVG()
使用sub-query求平均值:
SELECT ...
FROM MsStaff
WHERE StaffName Like '% %'
AND StaffSalary > (SELECT AVG(StaffSalary) FROM MsStaff)
select * from MsStaff where StaffSalary > (select avg(StaffSalary) from MsStaff)
我想查看我的 table 中工资高于每位员工平均工资的行。下面的代码给我一个错误:
Operand data type varchar is invalid for avg operator.
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
数据类型,但我收到另一个错误:
Msg 147, Level 15, State 1, Line 48
An aggregate may not appear in the WHERE clause unless it is in a subquery
contained in a HAVING clause or a select list, and the column being aggregated is
an outer reference."
虽然好像有道理,但是不能这么用AVG()
使用sub-query求平均值:
SELECT ...
FROM MsStaff
WHERE StaffName Like '% %'
AND StaffSalary > (SELECT AVG(StaffSalary) FROM MsStaff)
select * from MsStaff where StaffSalary > (select avg(StaffSalary) from MsStaff)