sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber

sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber

ID:34725870

大小:228.18 KB

页数:6页

时间:2019-03-10

sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber_第1页
sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber_第2页
sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber_第3页
sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber_第4页
sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber_第5页
资源描述:

《sqlserver2005实现排序报表的利器排序函数rank、denserank、ntile和rownumber》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、SQLServer2005新增了排名函数,一共四个,其中RANK()DENSE_RANK()NTILE()这三个函数是制作带有排名列报表的利器,ROW_NUMBER()函数在分页存储过程中被广泛使用排名函数有一个明显的共性,就是与over()子句配合使用与排名函数一起使用的over()子句有两个参数partition分组方式orderby排序方式RANK()和DENSE_RANK()是一对兄弟,唯一的不同是当使用RANK()进行排名时由于orderby参数的值可能存在相等的情况,比如有两个第一,那么下一

2、个会被排名在第三,即使用RANK()排名时,得到数值并不是连续的(1、1、3),而是用DENSE_RANK()时,得到的永远是连续的(1、1、2).语法:RANK()OVER([])DENSE_RANK()OVER([])示例:USEAdventureWorks;GOSELECTi.ProductID,p.Name,i.LocationID,i.Quan

3、tity,RANK()OVER(PARTITIONBYi.LocationIDorderbyi.Quantity)asRANKFROMProduction.ProductInventoryiJOINProduction.ProductpONi.ProductID=p.ProductIDORDERBYi.LocationID,RANKGOUSEAdventureWorks;GOSELECTi.ProductID,p.Name,i.LocationID,i.Quantity,DENSE_RANK()OVER

4、(PARTITIONBYi.LocationIDorderbyi.Quantity)asDENSE_RANKFROMProduction.ProductInventoryiJOINProduction.ProductpONi.ProductID=p.ProductIDORDERBYi.LocationID,DENSE_RANK;GO结果:NTILE()我的理解是将结果集按片分割,SQLServer帮助里写的是存储桶。语法:NTILE(integer_expression)OVER([

5、_by_clause>])与其他排名函数不同NTILE()多了一个参数integer_expression,这个参数是一个正整数,数据类型支持bigint.integer_expression参数决定了结果集最终分成几片,或者是分布到几个桶中.例如integer_expression参数为5,如果结果集的行数为50,正好能够整除,那么这50行数据会被分成5片,每片10行数据;如果不能够整除,结果集是53行数据,那么第一、二、三片,每片11行数据,其余10行数据.示例:U

6、SEAdventureWorks;GOSELECTc.FirstName,c.LastName,NTILE(5)OVER(ORDERBYSalesYTDDESC)AS'Quartile',s.SalesYTD,a.PostalCodeFromSales.SalesPersonsJOINPerson.Contactcons.SalesPersonID=c.ContactIDJOINPerson.AddressaONa.AddressID=c.ContactIDWHERETerritoryIDISNOTNU

7、LLANDSalesYTD<>0;GO结果:ROW_NUMBER()函数用来生成数据行在结果集中的序号语法:ROW_NUMBER()OVER([])示例:USEAdventureWorksGOSELECTc.FirstName,c.LastName,ROW_NUMBER()OVER(ORDERBYSalesYTDDESC)AS'RowNumber',s.SalesYTD,a.PostalCodeFROMSales.SalesPe

8、rsonsJOINPerson.Contactcons.SalesPersonID=c.ContactIDJOINPerson.AddressaONa.AddressID=c.ContactIDWHERETerritoryIDISNOTNULLANDSalesYTD<>0--以下示例将返回行号为50到60(含)的行,并以OrderDate排序。--这在分页时非常实用--关于WITH语法应查阅CTE相关内容USEAdventureWorks;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。