天天看點

where VS having 為什麼不能再where子句中使用組函數(聚合函數)

1.問題

select department_id,avg(salary)
from employees
where  avg(salary)>6000
group by department_id
--having  avg(salary)>6000
           
where VS having 為什麼不能再where子句中使用組函數(聚合函數)

2.原因。

sql語句的執行順序為

 from子句

where 子句

group by 子句

having 子句

order by 子句

select 子句

首先得知道聚合函數是對結果集運算的,當在where子句使用聚合函數時,此時根據group by 分割結果集的子句還沒有執行,此時隻有from 後的結果集。

是以無法在where子句中使用聚合函數。

繼續閱讀