ORA-00937: 不是單組分組函數

  最近寫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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章