聚集函数:运行在行组上,计算和返回单个值得函数。
- 确定表中行数;
- 获得表中行组的和;
- 找出表列的最大值、最小值和平均值。
SQL聚集函数
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
AVG()
- AVG()只能用来确定特定数值列的平均值,且列名必须作为函数的参数给出。
- 为了获得多个列的平均值,必须使用多个AVG()函数。
- AVG()函数忽略列值为NULL的行。
SELECT AVG(prod_price) ASavg_price
FROM products;
COUNT()
- 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
- 使用COUNT(column)对特定列中具有值得行进行计数,忽略NULL值。
SELECT COUNT(cust_email) AS num_cust
FROM customers;
MAX()与MIN()
- 在用于文本数据时,如果数据按照相应的列排序,则MAX()返回最后一行,MIN()返回最前面的行。
- MAX()与MIN()忽略列值为NULL的行。
SUM()
- 用来返回指定列值的和。
- 利用标准的算术操作符,所有聚集函数都可用来执行多个列上的计算。
SELECT SUM(item_price*quantity) AS total_price
FROM orderitems
WHERE order_num = 20005;
聚集不同值
- 对所有的行执行计算,指定ALL参数或不给参数(ALL为默认);
- 只包含不同的值,指定DISTINCT参数。
# 该例子平均值只考虑各个不同的价格
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;
DISTINCT必须使用列名,不能用于计算或表达式。
组合聚集函数
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;
聚集函数是高效设计的,他们返回结果一般比在客户机应用程序中计算要快得多。