1.问题
select department_id,avg(salary)
from employees
where avg(salary)>6000
group by department_id
--having avg(salary)>6000
2.原因。
sql语句的执行顺序为
from子句
where 子句
group by 子句
having 子句
order by 子句
select 子句
首先得知道聚合函数是对结果集运算的,当在where子句使用聚合函数时,此时根据group by 分割结果集的子句还没有执行,此时只有from 后的结果集。
所以无法在where子句中使用聚合函数。
本文解析了一段错误的SQL语句,该语句试图在WHERE子句中使用聚合函数AVG来过滤结果集。文章解释了SQL语句的正确执行顺序,并指出了为什么不能在WHERE子句中使用聚合函数。

被折叠的 条评论
为什么被折叠?



