SQL中的Group By
阿新 • • 發佈:2018-12-11
“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 類別;