返回组中值的平均值。空值将被忽略。
AVG ( [ ALL | DISTINCT ] expression ) 
ALL
对所有的值进行聚合函数运算。ALL 是默认设置。
DISTINCT
指定 AVG 操作只使用每个值的唯一实例,而不管该值出现了多少次。
expression
精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。不允许使用聚合函数和子查询。
返回类型由表达式的运算结果类型决定。
| 表达式结果 | 返回类型 | 
|---|---|
| 整数分类 | int | 
| decimal 分类 (p, s) | decimal(38, s) 除以 decimal(10, 0) | 
| money 和 smallmoney 分类 | money | 
| float 和 real 分类 | float | 
重要 当使用 CUBE 或 ROLLUP 时,不支持非重复聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用了 CUBE 或 ROLLUP,Microsoft® SQL Server™ 将返回错误信息并取消查询。
下例计算所有商业类书籍的平均预付款和本年度迄今为止的销售额。对检索到的所有行,每个聚合函数都生成一个单独的汇总值。
USE pubs
SELECT AVG(advance), SUM(ytd_sales)
FROM titles
WHERE type = 'business'
下面是结果集:
-------------------------- ----------- 
6,281.25                   30788       
(1 row(s) affected)
当与 GROUP BY 子句一起使用时,每个聚合函数都为每一组生成一个值,而不是对整个表生成一个值。下例对每一类书生成汇总值,这些值包括每一类书的平均预付款以及每一类书本年度迄今为止的销售总额。
USE pubs
SELECT type, AVG(advance), SUM(ytd_sales)
FROM titles
GROUP BY type
ORDER BY type
下面是结果集:
type                                                
------------ -------------------------- ----------- 
business     6,281.25                   30788       
mod_cook     7,500.00                   24278       
popular_comp 7,500.00                   12875       
psychology   4,255.00                   9939        
trad_cook    6,333.33                   19566       
UNDECIDED    NULL                       NULL      
(6 row(s) affected)
下列语句返回商业类书籍的平均价格。
USE pubs
SELECT AVG(DISTINCT price)
FROM titles
WHERE type = 'business'
下面是结果集:
-------------------------- 
11.64                      
(1 row(s) affected)
如果不使用 DISTINCT,AVG 函数将计算出 titles 表中所有商业类书籍的平均价格。
USE pubs
SELECT AVG(price)
FROM titles
WHERE type = 'business'
下面是结果集:
-------------------------- 
13.73                      
(1 row(s) affected)