聚集函数
常常需要汇总数据而不用把它们实际检索出来。
- 确定表中行数;
- 获得表中行组的和;
- 找出表列的最大值、最小值和平均值
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 某列的最大值 |
MIN() | 某列的最小值 |
SUM() | 某列值之和 |
聚集函数(aggregate function):运行在行组上,计算和返回单个值的函数。
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
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;
其他函数用法相同,注意MAX()和MIN()都忽略NULL值,SUM()可以汇总计算值。
SELECT SUM(item_price*quantity) AS total_price
FROM orderitems
WHERE order_num = 20005;
聚集不同值
聚集函数的DISTINCT
的使用只在MySQL5之后的版本可用。
- 对所有的行执行计算,指定
ALL
参数,默认; - 只包含不同的值,指定
DISTINCT
参数。
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;
组合聚合函数
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;