【專解】Oracle中GROUP BY的用法

我們先來看下問題吧

select job,ename,count(job)
from emp
group by job;

錯誤:ORA-00979: 不是 GROUP BY 表達式
00979. 00000 - “not a GROUP BY expression”




答案
group by語句中select指定的字段必須是“分組依據字段”。


group by是分組查詢,也就是說你前面除了聚合函數外我在group by後面必須要指定,否則就報錯。你想想,我按job進行分組,但是ename有很多不同的值,那這樣不就是一對多了嗎

上圖來看:

在這裏插入圖片描述

select job ,ename from emp group by job;

查詢的結果不就是一對多嗎:



在這裏插入圖片描述
右邊如何變成一條呢,也就是一對一,那這裏就用到了聚合函數
比如可以這樣寫:

select job,count(ename)  數量 from emp group by job;

這樣的結果就是

在這裏插入圖片描述




在帶有group by 子句的查詢語句中,在select 列表中指定的列要麼是group by 子句中指定的列,要麼包含聚組函數。


而在mysql中則沒有強制性要要求,沒有強調select指定的字段必須屬於group by後的條件。

希望對你有幫助!

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