- 1、本文档共180页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 SQL Server函数
在本章中,我会演示如何在T-SQL代码中使用SQL Server 2005内建函数。不要把SQL Server 2005内建函数和第11章介绍的用户定义函数混淆,它能让我们实现聚合、数学运算、字符串操作、行排序等等。
8.1 聚合函数
聚合函数用于对一个或多个值进行计算,最后得出一个值。经常使用的聚合函数的一个例子是SUM,它用来返回一组数字值的总值。表8-1列出了SQL Server 2005提供的一些经常使用的聚合函数。
表8-1 聚合函数
函 数 名 描 述 AVG AVG聚合函数计算一个组中非NULL值的平均值 COUNT COUNT聚合函数返回一个显示组中行数的整数值 COUNT_BIG 和COUNT功能一样,只是COUNT_BIG返回bigint数据类型值 MAX MAX聚合函数返回一组非NULL值中的最大值 MIN MIN聚合函数返回一组非NULL值中的最小值 SUM SUM聚合函数返回一个表达式中所有非NULL值的总和 STDEV STDEV函数根据数据母体的样本返回由表达式提供的所有值的标准差 STDEVP STDEVP函数也返回由表达式提供的所有值的标准差,只是它计算整个数据母体 VAR VAR函数根据数据母体的样本返回由表达式提供的值的方差 VARP 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函数根据数据母体
文档评论(0)