最近寫SQL的時候,有遇到過報出 ORA-00937的問題。
解釋:
select 列表項中除了包含聚合函數外,還包含了表的某些列,那麼你將必須使用group by語句,否則語法通不過。
例如:
SQL>
select deptno,job,avg(sal) from emp
ERROR 位於第 1 行:
ORA-00937: 非單組分組函數
其實這裏也非常容易理解,你既然指定了聚合函數,又同時制定了其他列,還想不按照指定的列來分組,你到底想讓oracle怎麼做呢?
這根本就得不出結果。就像你需要統計班上男女生的人數,但是又不能分組,只能在一條數據裏表示出來,怎麼能辦得到呢?
所以這裏的group by是必須的。
上面的錯誤糾正爲:
select deptno,job,avg(sal) from emp group by deptno,job;
就OK了
謹記
1.group by 前面的查詢字段必須是group by後面的字段或者分組函數(類似count,sum,min,max等等)。
2.如果分組函數(類似count,sum,min,max等)和單個字段一起查詢的時候,必須使用group by。
這個世界上沒有知識是學不會的,不是嗎?如果一開始學不會,就可以把問題細化分解,然後學習更基本的知識。最後,所有問題都能變得和1+1=2一樣簡單,我們需要的只是時間。好了,最後給大家推薦一個學習Java的好網站JAVA自學網站–how2j.cn