MySQL數據庫——彙總數據(聚集函數)

本節介紹什麼事SQL的聚集函數以及如何利用他們彙總表的數據。

在實際操作中,我們經常需要一些特點數據的,比如: 1.我們常常要確定表中的行數; 2. 獲得表中行組的和 ; 3.找出表列(或所有行或某些特定的行)的最大值、最小值和平均值。

上面那些例子都是都是需要對錶的數據,而不是實際表中的數據。 因此根據表中的實際數據項目返回來統計處理,是對資源和時間的一種浪費。而我們想要的其實是關於表本身的信息的彙總 。

下面給出SQL的聚集函數

函 數 說 明
AVG() 返回某列的平均值
COUNT() 返回某列的行數
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和

part 1 AVG()函數
AVG()通過對錶中行數計數並計算特定列值之和,求得該列的平均值。AVG()可用來返回所有列的平均值,也可以用來返回特定列或行的平均值。

SELECT AVG(users.user_age) AS avg_users FROM users

上面的語句將會返回users。user_age的平均值,爲avg_users作爲別名,來顯示返回。
tip:爲了獲得多個列的平均值,必須使用多個AVG()

part 2 COUNT 函數
COUNT函數進行計數。可利用COUNT()確定表中行的數目或符合特定條件的行的數目。他有兩種使用方式: 1.使用COUNT(*)對錶中 行的數目 進行計數,不骨幹列表中包含的是空值還是非空值。 2.使用COUNT(column)對特定列中具有值的行進行計數u,忽略null值。

SELECT COUNT(*) AS NUM_USER FROM users

上面這種句子,就會返回users表中行數。

SELECT COUNT(user_password) AS NUM_USER FROM users

這條語句將會對具有user_password的行進行計數

part 3 MAX()函數
MAX函數返回指定列中的最大值。MAX()要求指定列名。

SELECT MAX(users.user_age) AS USER_BEST FROM users;

上面的語句將會返回users表中 年紀最大的值 。

part 4 MIN()函數
和MAX()的功能相反,返回指定列的最小值

SELECT MIN(users.user_age) AS USER_BEST FROM users;

part 5 SUM()函數
SUM()函數用來返回指定列值的和(總計)。
下面舉一個例子,orderitems表包含訂單中實際的物品,每個物品有相應的數量。可如下檢索所訂購物品的總數:

SELECT SUM(users.user_age) AS USER_BEST FROM users;

上面的例子將會計算出 user.user_age這一列的和 。

SUM()也可以用來合計計算值。在下面的例子中,合計每項物品的item_price * quantity ,得出總的訂單金額。

SELECT SUM(item_price * quantity) AS total_price FROM orderitems WHERE order_num = 2005;

part 6 聚集不同的值
這是MySQL5.0.3新增的功能:以上的五個聚集函數,就惡意如下使用:
1.對所有的行執行計算,指定ALL參數或不給參數(因爲默認就是ALL)
2.如果指向包含不同的值,就指定DISTINST參數 來限定 。
下面的例子使AVG()函數返回特定供應商提供的產品的平均價格。它與上面的語句相似,但是使用了DISTINCT參數 來限定

SELECT AVT(DISTINCT prod_price)AS avg_price FROM products WHERE vend_id = 1003;

part 7 組合使用聚合函數
實際上 SELECT函數可以包含多個 聚集函數 如下:

SELECT COUNT(*) AS num_item,
MIN(prod_price) AS price_min,
MAX(prod)price) AS price_max,
AVG(prod_price) AS price_avg
FROM prouducts
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章