为什么这个SQL语句:
select team,avg(salary) 'Average Salary' from orgchart group by team having salary <38000;
出现以下错误?
的MySQL&GT;选择团队,平均(薪水)'平均薪水'来自orgchart group by 薪水<38000; ERROR 1054(42S22):未知专栏'工资' 在'有条款'
使用group by
我只能使用having
而非where
。正确。
以下作品:
select team,avg(salary) 'Average Salary' from orgchart group by team having avg(salary)<38000;
答案 0 :(得分:7)
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;
答案 1 :(得分:2)
where
子句适用于各个行,同时适用于组。有关详细信息,请访问:difference-between-having-and-where-clause