sql server 2005 T-SQL AVG (Transact-SQL)

返回组中各值的平均值。将忽略空值。后面可以跟 OVER 子句。

主题链接图标 Transact-SQL 语法约定

AVG ( [ ALL | DISTINCT ] expression ) 
ALL

对所有的值进行聚合函数运算。ALL 是默认值。

DISTINCT

指定 AVG 只在每个值的唯一实例上执行,而不管该值出现了多少次。

expression

是精确数值或近似数值数据类别(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。

返回类型由 expression 的计算结果类型确定。

表达式结果 返回类型

integer 类别

int

decimal 类别 (p, s)

decimal(38, s) 除以 decimal(10, 0)

moneysmallmoney 类别

money

floatreal 类别

float

重要提示:
使用 CUBE 或 ROLLUP 时,不支持区分聚合,如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用这类聚合,则 SQL Server 2005 数据库引擎将返回错误消息并取消查询。

如果 expression 是别名数据类型,则返回类型也具有别名数据类型。但是,如果别名数据类型的基本数据类型得到提升(例如,从 tinyint 提升到 int),则返回值具有提升的数据类型,而非别名数据类型。

A. 使用 SUM 和 AVG 函数进行计算

以下示例计算 Adventure Works Cycles 的副总所用的平均休假小时数以及总的病假小时数。对检索到的所有行,每个聚合函数都生成一个单独的汇总值。

USE AdventureWorks;
GO
SELECT AVG(VacationHours)as 'Average vacation hours',
SUM (SickLeaveHours) as 'Total sick leave hours'
FROM HumanResources.Employee
WHERE Title LIKE 'Vice President%';

下面是结果集:

Average vacation hours       Total sick leave hours 
---------------------- ----------------------
25 97

(1 row(s) affected)

B. 带 GROUP BY 子句使用 SUM 和 AVG 函数

当与 GROUP BY 子句一起使用时,每个聚合函数都针对每一组生成一个值,而不是针对整个表生成一个值。以下示例针对每个销售地区生成汇总值。汇总中列出每个地区的销售人员得到的平均奖金以及每个地区的本年度销售总额。

USE AdventureWorks;
GO
SELECT TerritoryID, AVG(Bonus)as 'Average bonus', SUM(SalesYTD) 'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO

C. 带 DISTINCT 使用 AVG

以下语句返回产品的平均标价。

USE AdventureWorks;
GO
SELECT AVG(DISTINCT ListPrice)
FROM Production.Product;

下面是结果集:

------------------------------
437.4042
(1 row(s) affected)

D. 不带 DISTINCT 使用 AVG

如果不使用 DISTINCT,AVG 函数将计算出 Product 表中所有产品的平均标价。

USE AdventureWorks;
GO
SELECT AVG(ListPrice)
FROM Production.Product;

下面是结果集:

------------------------------
438.6662
(1 row(s) affected)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值