我们经常需要汇总数据而不是把它们的实际检索出来,为此MySQL提供了专门的聚集函数。
函数 | 说明 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列之和 |
1、AVG()函数——通过队列表中的行数计数,并计算特定列值之和,求得该列的平均值
AVG函数忽略列值为NULL的行
SELECT AVG(prod_price) AS avg_price FROM products
2、COUNT()函数——确定表中行的数目或符合特定条件的行的数目
COUNT(*)是对表中的行数进行计数,不管表中的列包含的是空值还是NULL
COUNT(colum)对特定列中具有值的行进行计数,忽略NULL值
SELECT COUNT(*) AS num_cust FROM customers
下面例子只针对具有电子邮件的客户计数
SELECT COUNT(cust_email) AS num_cust FROM customers
3、MAX()函数——返回列中的最大值
MIN()函数——返回列中的最小值
它们都忽略列值为NULL的行
SELECT MAX(prod_price) AS max_price FROM products
SELECT MIN(prod_price) AS max_price FROM products
4、SUM()函数——返回指定列值的和
忽略列值为NULL的行
SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005
5、DISTINCT关键字——聚集不同值
对于聚集函数如果只想计算列值不同的行,需要用到关键字DISTINCT,它的后面必须指定列名
如下,只是计算不同年龄的平均值
SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003
6、组合聚集函数
实际上SELECT语句可根据需要包含多个聚集函数
SELECT COUNT(*) AS num_items,
AVG(prod_price) AS price_avg,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max
FROM products