最近寫SQL的時候,有遇到過報出 ORA-00937的問題。oracle
解釋:函數
select 列表項中除了包含聚合函數外,還包含了表的某些列,那麼你將必須使用group by語句,不然語法通不過。spa
例如:select
SQL> 語法
1 select deptno,job,avg(sal)統計
2 from emp數據
3 ;錯誤
ERROR 位於第 1 行:
ORA-00937: 非單組分組函數
其實這裏也很是容易理解,你既然指定了聚合函數,又同時制定了其餘列,還想不按照指定的列來分組,你到底想讓oracle怎麼作呢?
這根本就得不出結果。就像你須要統計班上男女生的人數,可是又不能分組,只能在一條數據裏表示出來,怎麼能辦獲得呢?
因此這裏的group by是必須的。
上面的錯誤糾正爲:
select deptno,job,avg(sal) from emp group by deptno,job;
就OK了