資料庫處理資料時,會需要將資料分組,計算各組資料的彙總值。
彙總函數有以下特質
- 又稱分組函數
- 一組資料列中,經運算後返回一個結果值
- 可以將資料列全體當作一組也可以將一個或多個以上指定欄位當作分組依據
- SELECT子句中,彙總函數可以伴隨單列函數使用
- 它可巢狀使用從最內層往外傳遞
SELECT [分組資料,] GROUP_FUNCTION(欄位)
FROM 資料表
[GROUP BY 分組欄位]
[ORDER BY 排序欄位]
常用的彙總函數有以下幾種
- AVG([DISTINCT|ALL]n):返回n個值得平均值,忽略空值
- COUNT({*|[DISTINCT|ALL]expr}):計算資料列總比數
- MAX([Distinct|ALL]expr):返回同組資料列最大值
- MIN([Distinct|ALL]expr):返回同組資料列最小值
分組彙總
可以在FROM子句之後,GROUP BY子句之前,加上WHERE子句來過濾參加分組彙總資料列
SELECT [分組資料,] GROUPFUNCTION(欄位)
FROM 資料表
WHERE 過濾條件
GROUP BY 分組欄位
[ORDER BY 排序欄位]
- WHERE子句是為了指定過濾條件,過濾資料
- WHERE子句一定要在GROUP BY子句之前
- WHERE子句不可以使用分組函數
- ORDER BY子句一定要放在最後面
WHERE子句是過濾未分組的資料,如果是要過濾分組後的資料就需要使用HAVING子句,此子句是過濾已經彙總的資料,限制檢索
SELECT [分組資料,] GROUPFUNCTION(彙總欄位)
FROM 資料表
[WHERE 過濾條件]
GROUP BY 分組欄位
HAVING 彙總函數 過濾條件
[ORDER BY 排序欄位];
- 比較運算式一定要為彙總函數
- HAVING子句一定要放在GROUP BY子句後面
- 目的在過濾限制已經分組之後的資料檢索