聚集函数(aggregate),对某些行运行的函数,计算并返回一个值。
检索例子:
- 确定表中行数
- 获得表中某些行的和
- 找出表列(或所有行或某些特定的行)的最大值、最小值、平均值
函数 | 说明 |
AVG() | 计算某个列的平均值 |
COUNT() | 统计行数量 |
SUM() | 获取单个列的合计值 |
MAX() | 计算列的最大值 |
MIN() | 计算列的最小值 |
1.AVG函数
AVG()通过对表中行数计数并计算其列值之和,求得该列的平均值。AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。
SELECT AVG(shop_price) AS avg_price FROM goods_goods;
对产品表中的所有商品的价格求平均值。
SELECT AVG(shop_price) AS avg_price FROM goods_goods WHERE category_id = 7;
对类型id=7的商品的价格求平均值
注意:AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为获取多个列的平均值,必须使用多个AVG()函数。
说明:AVG()函数忽略值为NULL的行。
2.COUNT()函数
COUNT函数进行计数,可利用COUNT()确定表中行的数目或符合特定条件的行的数目。
两种使用方式:
- 使用COUNT(*)对表中的数目进行计算,不管表列中包含的是空值(NULL)还是非空值。
- 使用COUNT(column) 对特定列中具有值的行进行计数,忽略NULL值
SELECT COUNT(*) AS count_ FROM goods_goods WHERE category_id = 7;
检索出商品类型为7的商品数量
3.MAX()函数
MAX()返回指定列中的最大值。MAX()要求指定列名。
SELECT MAX(shop_price) AS max_price FROM goods_goods WHERE category_id = 7;
从商品类型为7的商品中选择价格最大值。
提示:虽然MAX()一般用来找出最大的数值或日期值,MAX()函数忽略列值为NULL的行。
4.MIN()函数
MIN()返回指定列的最小值。
SELECT MIN(shop_price) AS min_price FROM goods_goods WHERE category_id = 7;
从商品类型为7的商品中选择价格最小值。
5.SUM()函数
返回指定列的和(总计)
SELECT SUM(shop_price) AS total_price FROM goods_goods WHERE category_id = 7;
计算出商品类型为7的商品的总价格。
6.聚集不同值
以上5个聚集函数,都可以如下使用:
- 对所有行执行计算,指定ALL参数或不指定参数
- 只包含不同的只,指定DISTINCT参数
说明:Access数据库不支持DISTINCT
下面例子使用AVG函数返回特定供应商提供的产品的平均价格。但是使用了DISTINCT,因此平均值只考虑各个不同的价格
SELECT AVG(DISTINCT prod_price) AS avg_price FROM Products WHERE vend_id = 'DLL01'
注意:如果指定列名,则DISTINCT只能用于COUNT().DISTINCT不能用于COUNT(*),DISTINCT只能用于列名,不能用于计算或表达式。
7.组合聚集函数
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;
执行4个聚合函数,返回物品数目,物品平均值,物品最高,最低价格
评论列表
已有0条评论