SQL中的彙總數據(其實是聚集函數)

聚集函數(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;





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