1. 程式人生 > >SQL中的Group By

SQL中的Group By

“Group By”從字面意義上理解就是根據“By”指定的規則對資料進行分組,所謂的分組就是將一個“資料集”劃分成若干個“小區域”,然後針對若干個“小區域”進行資料處理。

原始表

簡單Group By

select 類別, sum(數量) as 數量之和
from A
group by 類別

返回結果如下表,實際上就是分類彙總。

Group By 和 Order By

select 類別, sum(數量) AS 數量之和
from A
group by 類別
order by sum(數量) desc

返回結果如下表

在Access中不可以使用“order by 數量之和 desc”,但在SQL Server中則可以。

Group By中Select指定的欄位限制

select 類別, sum(數量) as 數量之和, 摘要
from A
group by 類別
order by 類別 desc
執行後會提示下錯誤,如下圖。這就是需要注意的一點:在select指定的欄位要麼就要包含在Group By語句的後面,作為分組的依據;要麼就要被包含在聚合函式中。

Group By與聚合函式 

上面提到group by語句中select指定的欄位必須是“分組依據欄位”,其他欄位若想出現在select中則必須包含在聚合函式中,常見的聚合函式如下表:

函式 作用 支援性
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
first(列名) 第一條記錄 僅Access支援
last(列名) 最後一條記錄 僅Access支援
count(列名) 統計記錄數 注意和count(*)的區別

求各組平均值

select 類別, avg(數量) AS 平均值 from A group by 類別;

求各組記錄數目

select 類別, count(*) AS 記錄數 from A group by 類別;