Как я могу найти зарплату больше, чем средняя зарплата каждого сотрудника? - PullRequest
0 голосов
/ 06 июня 2019

Я хочу просмотреть строки из моей таблицы, где зарплата превышает среднюю зарплату каждого сотрудника.С кодом ниже он выдает мне ошибку:

Тип данных операнда 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
Агрегат может не отображаться в предложении WHERE, если он не находится вподзапрос
, содержащийся в предложении HAVING или списке выбора, а агрегируемый столбец -
внешняя ссылка. "

Data sample

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Хотя это кажется разумным, вы не можете использовать AVG() таким образом.
Используйте подзапрос, чтобы найти среднее значение:

SELECT ...
FROM MsStaff
WHERE StaffName Like '% %'
AND StaffSalary > (SELECT AVG(StaffSalary) FROM MsStaff)
0 голосов
/ 06 июня 2019
select * from MsStaff where StaffSalary > (select avg(StaffSalary) from MsStaff)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...