聚集函数
聚集函数:运行在行组上,计算和返回单个值的函数。
利用标准的算术操作符,所有聚集函数都可以用来执行多个列上的计算。如:
select sum(item_price*quantity) as total_price from orderitems;
AVG()函数
AVG()通过对表中行数计数并计算特定列支之和,求得该列的平均值。AVC()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。
select avg(prod_price) as avg_price from products;
AVG()函数忽略列值为NULL的行。
AVG()函数只用于单个列;列名必须作为函数参数给出。
COUNT()函数
COUNT()函数有两种使用方式:
- 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值;
- 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值;
MAX()函数
MAX()返回指定列中的最大值,MAX()要求指定列名。
MAX()函数忽略列值为NULL的行。
MIN()函数
MIN()返回指定列的最小值,MIN()要求指定列名。
MIN()函数忽略列值为NULL的行。
SUM()函数
SUM()用来返回指定列值的和。
SUM()也可以用来合计计算值:
select sum(item_price*quantity) as total_price from orderitems;
SUM()函数忽略列值为NULL的行。
聚集不同的值 - DISTINCT
上面的聚集函数都可以如下使用:
- 对所有的行执行计算,指定ALL参数或不给参数(因为ALL是默认行为);
- 只包含不同的值,指定DISTINCT参数;
- 如果指定列名,则DISTINCT只能用于COUNT(),DISTINCT不能用于COUNT(*)。
- DISTINCT必须使用列名,不能用于计算或表达式;
- 将DISTINCT用于MIN和MAX,没有实际的价值;
示例:
select avg(distinct prod_price) as avg_price from products;
组合不同的聚集函数
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;
输出:
num_items | price_min | price_max | price_avg |
9 | 3.4 | 11.9 | 6.82 |