1.問題描述 select deptno ,avg(sal) from emp where count(*)>3 group by deptno; 在where 句中使用聚合函數count(*),報出錯誤:ORA-00934: group function is not allowed here 那 ...
1.問題描述
select deptno ,avg(sal) from emp where count(*)>3 group by deptno; 在where 句中使用聚合函數count(*),報出錯誤:ORA-00934: group function is not allowed here
那是為什麼呢?
2.問題解決:
大致解釋如下,sql語句的執行過程是:from-->where-->group by -->having --- >order by --> select;
聚合函數是針對結果集進行的,但是where條件並不是在查詢出結果集之後運行,所以主函數放在where語句中,會出現錯誤,
而having不一樣,having是針對結果集做篩選的,所以我門一般吧組函數放在having中,用having來代替where,having一般跟在group by後
正確代碼:
select deptno,avg(sal) from emp group by deptno having count(deptno)>3;
來自:https://blog.csdn.net/w2232097312/article/details/52211201