聚集函数 运行在行组上,计算和返回单个值的函数。
常见的5个聚集函数
这些函数是高效设计的,它们返回结果一般比我们自己的客户机应用程序计算要快得多。
AVG()函数 返回某列的平均值
通过对表中行数计数并计算特定列值之和,求得该列的平均值。
可以用来返回所有列的平均值或者返回特定列或行的平均值。
SELECT AVG(price) AS avg_price FROMproducts WHEREid = 1003;
[注]:只用于单个列,为了获得多个列的平均值必须使用多个AVG()函数。会忽略列值为NULL的行。
COUNT()函数 返回某列的行数
COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
COUNT(column) 对特定列中具有值的行进行计数,忽略NULL值。
MAX()函数 返回某列的最大值
同样忽略列值为NULL的行
虽然MAX()函数一般用来找出最大的数值或日期,但MySQL允许将它用来返回任意列中的最大值,包括返回文本列中的最大值。
[注]:在用于文本数据时,如果数据按相应的列排序,则MAX()返回最后一行。
MIN()函数 返回某列的最小值
与MAX()函数类似
SUM()函数 返回某列值之和
也可以用来合计计算
SELECT SUM(price*quantity) AS total FROMorders WHERE order_num = 2005;
如上例所示,利用标准的算术操作符,所有聚集函数都可以用来执行多个列上的计算。
MySQL 5以及以上版本支持 聚集函数的DISTINCT使用
只包含不同的值,则需要指定DISTINCT参数
SELECT AVG(DISTINCT price) AS avg_priceFROM products WHERE id = 1003;
因此平均值只考虑不同的价格;
[注]:DISTINCT不能用于COUNT(*),因为不允许使用 COUNT(DISTINCT)。
DISTINCT必须使用列名。
组合聚集函数 SELECT语句可以根据需要包含多个聚集函数。
SELECT COUNT(*) AS num,
MIN(price) AS price_min,
AVG(price) AS price_avg
FROM products;