SQL Server 2005范例代码查询辞典

2019-04-22 23:56

第8章 SQL Server函数

在本章中,我会演示如何在T-SQL代码中使用SQL Server 2005内建函数。不要把SQL Server 2005内建函数和第11章介绍的用户定义函数混淆,它能让我们实现聚合、数学运算、字符串操作、行排序等等。

8.1 聚合函数

聚合函数用于对一个或多个值进行计算,最后得出一个值。经常使用的聚合函数的一个例子是SUM,它用来返回一组数字值的总值。表8-1列出了SQL Server 2005提供的一些经常使用的聚合函数。

表8-1 聚合函数

函 数 名 AVG COUNT COUNT_BIG MAX MIN SUM STDEV STDEVP VAR VARP

描 述

AVG聚合函数计算一个组中非NULL值的平均值 COUNT聚合函数返回一个显示组中行数的整数值 和COUNT功能一样,只是COUNT_BIG返回bigint数据类

型值

MAX聚合函数返回一组非NULL值中的最大值 MIN聚合函数返回一组非NULL值中的最小值

SUM聚合函数返回一个表达式中所有非NULL值的总和 STDEV函数根据数据母体的样本返回由表达式提供的所有值的标准差

STDEVP函数也返回由表达式提供的所有值的标准差,只是它计算整个数据母体

VAR函数根据数据母体的样本返回由表达式提供的值的方差

VARP函数也返回表达式整个数据母体提供的值的方差

接下来的几个技巧会演示这些聚合函数。

8.1.1 返回平均值

AVG聚合函数计算组中非NULL值的平均值。

第一个示例演示如何使用AVG聚合函数返回组中非NULL值的平均值:

产品平均等级

这个查询返回:

第二个示例演示对StrandardCost列的DISTINCT值取平均——也就是说只有唯一的StandardCost值才会被平均:

对DISTINCT StandardCost求平均

这个查询返回:

解析

在这个技巧中,第一个示例返回由ProductID分组的平均产品等级。 第二个示例对DISTINCT StandardCost进行平均——也就是说只有唯一的StandardCost才会被平均。没有DISTINCT关键字,AVG聚合函数默认的行为会对包括重复值在内的所有值取平均。

8.1.2 返回行总数

COUNT聚合函数返回一个显示组中行的总数的整数数据类型。 这个示例演示了使用COUNT聚合函数来返回组中行的总数:

这个查询返回如下的(部分)结果:

如果在COUNT函数圆括号内包含DISTINCT关键字,你会得到那列的不重复值的总数。例如:

这个查询返回:

解析

在本技巧的第一个示例中,计算了每个货架上的货物数。COUNT是唯一一个不忽略NULL值的聚合函数,如果ProductID是NULL的话,它还是会在总数中包括。第二个示例演示了计算Production. ProductInventory表中不重复的货架总数。

如果你需要计算一个比整数数据类型所能存放的更大的值,可以使用COUNT_BIG聚合函数,它返回bigint数据类型的值。

8.1.3 找出表达式中的最小和最大值

MAX聚合函数返回组中非NULL值的最大值而MIN聚合函数返回最小值。MIN和MAX能用于数字、字符和datetime列。字符数据类型的最小和最大值由ASCII字母排序决定。datetime值的MIN和MAX基于最早的日期和最近的日期。

在本例中,我会演示如何使用MIN和MAX函数来找出Production.ProductReview表的Rating数字列中的最小和最大值:

这个查询返回:

解析

这个技巧演示获取Production.ProductReview表中Rating值的最小

和最大值。和其他聚合函数一样,如果在SELECT子句中引用非聚合列,那么它们必须包含在GROUP BY子句中。

8.1.4 返回值的和

SUM聚合函数返回表达式中非NULL值的总和。

这个示例演示了如何使用SUM聚合函数来返回每个AccountNumber中TotalDue列值的总和:

这个查询返回下面的部分结果:

解析

在这个技巧中,根据AccountNumber来计算TotalDue列的和。因为AccountNumber本身不参与聚合而是包含在GROUP BY子句中。它也包含在ORDER BY子句中以根据分组的结果进行排序。

8.1.5 使用统计聚合函数

在这个技巧中,我会演示使用统计函数VAR、VARP、STDEV和STDEVP。 VAR函数根据数据母体的样本返回由表达式提供的值的方差(VARP函数也返回表达式整个数据母体提供的值的方差)。

第一个示例返回Sales.SalesOrderHeader表中所有行的TaxAmt值的方差:

这个查询返回:

STDEV函数根据数据母体的样本返回由表达式提供的所有值的标准差。STDEVP函数也返回由表达式提供的所有值的标准差,只是它计算整个数据母体。

这个示例返回Sales.SalesOrderDetail表中所有行对于UnitPrice值的统计标准差:

这个查询返回:

解析

尽管统计函数各不相同,但是实现还是相近的。特别是在本例中,每个函数都接受一个值表达式,使用表的一个列名。然后函数使用SELECT子句中指定的列对一组数据(0个或多个行)进行操作并返回一个值。

8.2 数学函数

SQL Server 2005提供了几个能用于T-SQL代码的数学函数,如表8-2描述的那样。

表8-2 数学函数

函 数 ABS ACOS ASIN ATAN ATN2 CEILING COS COT DEGREES EXP FLOOR

计算绝对值

计算其余弦是所指定参数的角(弧度) 计算其正弦是所指定参数的角(弧度) 计算其正切是所指定参数的角(弧度)

计算其正切介于两个浮点表达式之间的角(弧度) 计算大于或等于指定参数的最小整数 计算余弦 计算余切 把弧度转化为度 计算指定参数的指数值

返回小于或等于指定参数的最大整数

(续) 描 述


SQL Server 2005范例代码查询辞典.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:廉租房龙感湖监理细则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: