SQL2008排名函数

排名函数的常用使用格式:函数名() over (order by 列名 [asc|desc][,列名……])

注意:返回结果集会根据使用排名函数时指定的列进行排序,因此不要在 from 子句后面再次使用 order by,会导致排名混乱。

 

row_number无参数

select roductID,[Name],ListPrice, row_number()

 over(order by ListPrice desc) as rank 

from Production.Product

为结果集内每一行进行编号,从1开始后面行依次加 1。

 

rank无参数

select ProductID,[Name],ListPrice,rank()

over(order by ListPrice desc) as rank

from Production.Product

如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名不连续。例如,如果有价格最高的两种产品的价格相同,它们将列第一。由于已有两行排名在前,所以具有下一个最高价格的产品将排名第三。该排名等于该行之前的所有行数加一。因此,RANK 函数并不总返回连续整数。

 

dense_rank无参数

select

ProductID,[Name],ListPrice,dense_ rank()

over(order by ListPrice desc) as rank

from Production.Product

如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名连续。

例如,如果有价格最高的两种产品的价格相同,它们将并列第一,下一个最高价

格的产品将排名第二。因此,DENSE_RANK 函数返回的数字没有间断,并且始终具有连续的排名。

posted @ 2015-10-09 22:30  Sam萨姆  阅读(125)  评论(0)    收藏  举报