聚集函數(aggregate function):對某些行運行的函數,計算並返回一個值,(作用是總計的和總數的)
aggregate | 英 [ˈægrɪgət] | 美 [ˈæɡrɪɡɪt] |
n. | 骨料; 合計; 聚集體; 集料(可成混凝土或修路等用的); |
adj. | 總數的,總計的; 聚合的; [地] 聚成巖的; |
vt. | 使聚集,使積聚; 總計達; |
在數據庫應用中, 需要彙總表中的數據,而不是實際數據本身,所以返回實際表數據純屬浪費時間和處理資源,我們實際想要的是彙總信息,例如:
1. 確定表中的行數(或者滿足某個條件或包含某個特定值的行數)
2.獲得表中某些行的和
3.找出表列的最大值、最小值和平均值
一共有5個聚集函數,
AVG() 返回某列的平均值
COUNT()返回某列的行數
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM()返回某列值之和
1. AVG()函數
只能用來確定特定數值列的平均值,而且列名必須作爲函數參數給出,但只能用於單個列,爲了獲得多個列的平均值,必須使用多個AVG()函數,並且這個函數會忽略列值爲NULL的行。
AVG( [DISTINCT | ALL] column)
使用DISTINCT會去重,這樣算平均數更加嚴謹科學,否則會有重數計算會有影響。
SELECT AVG(prod_price) AS avg_price
FROM Products
WHERE vend_id = "DLL01"
2.COUNT()
此函數進行計數,可確定表中行的數目或符合特定條件的行的數目。有兩種使用方式:
(1COUNT( *)對表中行的數目進行計數,不管表列中包含的是空值NULL還是非空值,不管行中各列有什麼值。並且不能用DISTINCT
(2)COUNT( [DISTINCT | ALL] column)對特定列中具有值得行進行計數,忽略NULL值。使用DISTINCT會去重
3.MAX()和MIN()函數
MAX( [DISTINCT | ALL] column) 都會忽略列值爲 NULL 的行。其實這兩個函數有沒有 DISTINCT都沒有什麼卵用。
4.SUM()函數
會返回指定列值的和(總計)也會忽略值爲 NULL 的行。
quantity和 item_price爲表中的行,SUM()函數中可以有 計算字段
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;
還有這麼使用的:
SELECT SUM(quantity*item_price) AS total_price
//合計每項物品的quantity*item_price,得出總的訂單金額。
FROM OrderItems
WHERE order_num = 20005;