为什么这个SQL语句:
select team,avg(salary) 'Average Salary' from orgchart group by team having salary <38000;
给出以下错误?
mysql>选择团队,avg(薪水)'平均薪水'来自orgchart group by team with salary <38000;错误1054(42S22):'having子句'中的未知列'salary'
使用group by
我只能使用having
而不是where
.Correct。
以下作品:
select team,avg(salary) 'Average Salary' from orgchart group by team having avg(salary)<38000;
HAVING用于评估一组行。在分组之前,您仍然可以通过对它们应用WHERE条件来单独评估/过滤行。
所以,在你的情况下它应该是
select team, avg(salary) 'Average Salary'
from orgchart
where salary < 38000
group by team;
假设你想计算工资低于38000的人的平均工资(每个团队分别)。
但是,如果您实际上试图过滤掉平均薪水低于38000的团队,那么having
是正确的选择,但您应该将avg(salary)
而不是salary
与给定值进行比较,即如下所示:
select team, avg(salary) 'Average Salary'
from orgchart
group by team
having avg(salary) < 38000;
where
子句适用于各行,同时适用于组。有关这方面的更多信息,请访问:difference-between-having-and-where-clause