聚集函數(shù)
對某些行運(yùn)行的函數(shù)缩挑,計(jì)算并返回一個值
函數(shù) | 說明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行數(shù) |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
1 AVG()函數(shù)
AVG()通過對表中行數(shù)計(jì)數(shù)并計(jì)算其列值之和,求得該列的平均值扎即。AVG()可用來返回所有列的平均值吞获,也可以用來返回特定列或行的平均值。
SELECT AVG(prod_price) AS avg_price FROM products
SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id='dll01'
注意:只用于單個列
AVG()只能用來確定特定數(shù)值列的平均值铺遂,而且列名必須作為函數(shù)參數(shù)衫哥。為了獲得多個列的平均值,必須使用多個AVG()函數(shù)襟锐。
說明:NULL值
AVG()函數(shù)忽略列值為NULL的行撤逢。
2 COUNT()函數(shù)
COUNT()函數(shù)進(jìn)行計(jì)數(shù)。可利用COUNT()確定表中行的數(shù)目或者符合特定條件的行的數(shù)目蚊荣。
SELECT COUNT(*) AS num_count FROM customers
SELECT COUNT(cust_email) AS num_count FROM customers
說明:NULL值
如果指定列名初狰,則COUNT()函數(shù)會忽略指定列的值為空的行,但如果COUNT()函數(shù)中用的是星號“ * ”互例,則不忽略奢入。
3 MAX()函數(shù)
MAX()返回指定列中的最大值。MAX()要求指定列名媳叨。
SELECT MAX(prod_price) AS max_price FROM products
提示:對非數(shù)值數(shù)據(jù)使用MAX()
在用于文本數(shù)據(jù)時腥光,MAX()返回按該列排序后的最后一行。
SELECT MAX(prod_name) AS max_name FROM products #ORDER BY prod_name DESC
說明:NULL值
MAX()函數(shù)忽略列值為NULL的行
4 MIN()函數(shù)
MIN()返回指定列中的最小值糊秆。MIN()要求指定列名武福。
SELECT MIN(prod_price) AS min_price FROM products
提示:對非數(shù)值數(shù)據(jù)使用MIN()
在用于文本數(shù)據(jù)時,MIN()返回按該列排序后的最前面的行痘番。
SELECT MIN(prod_name) AS min_name FROM products #ORDER BY prod_name DESC
說明:NULL值
MAX()函數(shù)忽略列值為NULL的行
5 SUN()函數(shù)
SUM()用來返回指定列值得和(總計(jì))
SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005
SUM()也可以用來合計(jì)計(jì)算值
SELECT SUM(quantity*item_price) AS total_price FROM orderitems WHERE order_num = 20005
說明:NULL值
SUM()函數(shù)忽略列值為NULL的行
提示:在多個列上進(jìn)行計(jì)算
利用標(biāo)準(zhǔn)的算術(shù)操作符捉片,所有聚集函數(shù)都可用來執(zhí)行多個列上的計(jì)算
聚集不同值
(個人理解:首先排除不同的值,然后使用聚集函數(shù)計(jì)算)
以上5個聚集函數(shù)都可以如下使用:
- 對所有行執(zhí)行計(jì)算
- 只包含不同值汞舱,指定DISTINCT參數(shù)
SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id='dll01'
分析:使用 DISTINCT之后伍纫,此例子中的 avg_price 比較高,因?yàn)橛卸鄠€物品具有相同的較低價格昂芜,排除它們提升了平均價格莹规。
提示:DISTINCT不能用于COUNT(*) ,用于MAX()和MIN()也沒有任何意義泌神。DISTINCT必須使用列名访惜。
組合聚集函數(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;