聚集函數(shù)
常常需要匯總數(shù)據(jù)而不用把它們實際檢索出來。
- 確定表中行數(shù)润脸;
- 獲得表中行組的和怔球;
- 找出表列的最大值、最小值和平均值
函數(shù) | 說明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行數(shù) |
MAX() | 某列的最大值 |
MIN() | 某列的最小值 |
SUM() | 某列值之和 |
聚集函數(shù)(aggregate function):運行在行組上,計算和返回單個值的函數(shù)桑孩。
函數(shù) | 說明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行數(shù) |
MAX() | 某列的最大值 |
MIN() | 某列的最小值 |
SUM() | 某列值之和 |
例:
AVG()
SELECT AVG(prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;
COUNT():注意NULL
值拜鹤,如果指定列名則空的行被忽略,如果是*則不忽略流椒。
SELECT COUNT(*) AS num_cust
FROM customers;
SELECT COUNT(cust_email) AS num_cust
FROM customers;
其他函數(shù)用法相同敏簿,注意MAX()和MIN()都忽略NULL值,SUM()可以匯總計算值宣虾。
SELECT SUM(item_price*quantity) AS total_price
FROM orderitems
WHERE order_num = 20005;
聚集不同值
聚集函數(shù)的DISTINCT
的使用只在MySQL5之后的版本可用惯裕。
- 對所有的行執(zhí)行計算,指定
ALL
參數(shù)绣硝,默認蜻势; - 只包含不同的值,指定
DISTINCT
參數(shù)鹉胖。
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;
組合聚合函數(shù)
SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS price_avg
FROM products;