SELECT *
FROM dbo.staff
WHERE st_position = 'Supervisor' AND st_salary < AVG(st_salary);
所以我试图设置一个查询,输出薪水低于平均水平的所有主管的列表。 把它放进去我得到以下错误。
Msg 147,Level 15,State 1,Line 1 聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中,并且要聚合的列是外部引用。
答案 0 :(得分:3)
要获得平均工资的价值,我们可以使用以下查询:
SELECT AVG(st_salary) FROM dbo.staff
将它与其他条件组合在一起,将提供以下查询:
SELECT *
FROM dbo.staff
WHERE st_position = 'Supervisor'
AND st_salary < (SELECT AVG(st_salary) FROM dbo.staff)
答案 1 :(得分:0)
我会使用窗口函数来执行此操作:
SELECT s.*
FROM (SELECT s.*, AVG(st_salary) OVER () as avg_st_slary
FROM dbo.staff s
WHERE s.st_position = 'Supervisor'
) s
WHERE st_salary < avg_st_salary;