如何利用聚集函数汇总表的数据
聚集函数 使用场景:我们经常需要汇总数据而不用把它们实际检索出来
聚集函数有哪些:AVG(),COUNT(),MAX(),MIN(),SUM()
使用举例:
AVG()函数
SELECT AVG(prod_price) AS avg_price
FROM products;
以上例子是返回products表中所有产品的平均价格,也可以求特定产品的平均值
SELECT AVG(prod_price) AS avg_price
FROM products
WHERE vend_id=1003;
AVG()函数只能用于单个列,为了获得多个列的平均值,必须使用多个AVG()函数
AVG()忽略列值为NULL的行
COUNT()函数
COUNT(*)不忽略空值,COUNT(column)忽略空值
SELECT COUNT(*) AS num_cast
FROM customers;
以上例子对所有行计数,即使某一行的取值是空值
如果要在计数时忽略空值,使用COUNT(column)的形式
SELECT COUNT(cust_email) AS num_cust
FROM customers;
以上例子只统计了具有电子邮件地址的客户数
MAX() & MIN()函数
SELECT MAX(prod_price) AS max_price
FROM products;
以上语句返回products表中最贵的物品的价格
MAX()函数忽略列值为空的行
MIN()函数的用法和MAX()函数完全一致
SUM ()函数
SELECT SUM(quantity) AS items_ordered
FROM orderitems
WHERE order_num =20005;
SUM()也可以用来合计计算值
SELECT SUM(item_price * quantity) AS total_price
FROM orderitems
WHERE order_num =20005;
SUM()函数忽略列值为空的行
在使用聚集函数时,对所有行执行计算,指定ALL值或不给参数(默认对所有行执行计算)
在使用聚集函数时,只对不同的值执行计算,指定DISTINC参数
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id=1003;
上述例子只计算不同价格的平均值
一个SELECT语句可以包含多个聚集函数
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;
聚集函数是高效设计的,其返回的结果比你在自己的客户机应用程序中计算要快的多