關於ORA-00979 不是 GROUP BY 運算式錯誤的解釋

來源:互聯網
上載者:User

標籤:技術分享   highlight   存在   nio   union   初學   資訊   朋友   sharp   

ORA-00979 不是 GROUP BY 運算式”這個錯誤,和我前面介紹的另外一個錯誤ORA-00937一樣使很多初學oracle的人愛犯的。

我在介紹使用彙總函式中用group by來分組資料時特別說明了select 清單項目中不存在的列可以出現在group by的清單項目中,但反過來就不行了,在select清單項目中出現的列必須全部出現在group by後面(彙總函式除外)

但一些朋友經常愛把select 清單項目的中列忘了寫在group by中。於是就出現了以上的錯誤ORA-00979 不是GROUP BY 運算式。

Oracle的中文錯誤提示資訊翻譯得非常不到位,面對著不是 GROUP BY 運算式很多朋友摸不著頭腦,不知道oracle在說什麼。

例如下面的例子就會出現這個錯誤:

SQL> select deptno,job,avg(sal)from empgroup by deptno;

  

ERROR 位於第 1 行:

ORA-00979: 不是 GROUP BY 運算式

這裡就是因為在select 列表像中出現了像deptno和job,而在group by中並沒有出現的緣故。

以上的錯誤校正為:

Select deptno,job,avg(sal) from emp

Group by deptno,job;

 

 

另外的一種解決方案,欄位盡量少帶,

select "COUNT"("ID") from (SELECT  UNIONID, "ID" FROM WX_ORDER WHERE PAY_STATUS=0 and ORDER_STATUS=0 and CREATE_TIME BETWEEN 1539705600 AND  1539791999) GROUP BY UNIONID  ;            

  

關於ORA-00979 不是 GROUP BY 運算式錯誤的解釋

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.