T-SQL中常用函数.doc
文本预览下载声明
T-SQL中常用函数(1)—聚合函数
AVG:返回平均值,后面可能跟随 OVER 子句。
语法:AVG ( [ ALL | DISTINCT ] expression ) ; all 对所有的值进行聚合函数运算。ALL 是默认值。DISTINCT
指定 AVG 只在每个值的唯一实例上执行,而不管该值出现了多少次。expression
是精确数值或近似数值数据类别(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。
示例:
计算 Adventure Works Cycles 的副总所用的平均休假小时数以及总的病假小时数。对检索到的所有行,每个聚合函数都生成一个单独的汇总值。
1 USE AdventureWorks; 2 GO
3 SELECT AVG(VacationHours)as Average vacation hours,? 4 ????SUM? (SickLeaveHours) as Total sick leave hours
5 FROM HumanResources.Employee 6 WHERE Title LIKE Vice President%; 当与 GROUP BY 子句一起使用时,每个聚合函数都针对每一组生成一个值,而不是针对整个表生成一个值。以下示例针对每个销售地区生成汇总值。汇总中列出每个地区的销售人员得到的平均奖金以及每个地区的本年度销售总额。
1 USE AdventureWorks; 2 GO
3 SELECT TerritoryID, AVG(Bonus)as Average bonus, SUM(SalesYTD) YTD sales 4 FROM Sales.SalesPerson
5 GROUP BY TerritoryID; 6 GO ?
CHECKSUM:返回按照表的某一行或一组表达式计算出来的校验和值
语法:CHECKSUM ( * | expression[ ,...n ] ) * 指定对表的所有列进行计算。如果有任一列是非可比数据类型,则 CHECKSUM 返回错误。非可比数据类型有 text、ntext、image、XML 和 cursor,还包括以上述任一类型作为基类型的 sql_variant 。 expression? 除非可比数据类型之外的任何类型的表达式。
CHECKSUM 对其参数列表计算一个称为校验和的哈希值。此哈希值用于生成哈希索引。如果 CHECKSUM 的参数为列,并且对计算的 CHECKSUM 值生成索引,则结果是一个哈希索引。它可用于对列进行等价搜索。CHECKSUM 满足哈希函数的下列属性:在使用等于 (=) 运算符比较时,如果两个列表的相应元素具有相同类型且相等,则在任何两个表达式列表上应用的 CHECKSUM 将返回同一值。对于该定义,指定类型的 Null 值被作为相等进行比较。如果表达式列表中的某个值发生更改,则列表的校验和通常也会更改。但只在极少数情况下,校验和会保持不变。因此,我们不推荐使用 CHECKSUM 来检测值是否更改,除非应用程序可以容忍偶尔丢失更改。请考虑改用 HashBytes。指定 MD5 哈希算法时,HashBytes 为两个不同输入返回相同结果的可能性比 CHECKSUM 小得多。
示例:使用 CHECKSUM 生成哈希索引。通过将计算校验和列添加到索引的表中,然后对校验和列生成索引来生成哈希索引。
1 -- Create a checksum index. 2 SET ARITHABORT ON;
3 USE AdventureWorks;? 4 GO
5 ALTER TABLE Production.Product 6 ADD cs_Pname AS CHECKSUM(Name);
7 GO 8 CREATE INDEX Pname_index ON Production.Product (cs_Pname);
9 GO 校验和索引可用作哈希索引,尤其是当要索引的列为较长的字符列时可以提高索引速度。校验和索引可用于等价搜索。
1 /*Use the index in a SELECT query. Add a second search? 2 condition to catch stray cases where checksums match,?
3 but the values are not the same.*/ 4 SELECT *?
5 FROM Production.Product 6 WHERE CHECKSUM(NBearing Ball) = cs_
显示全部