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 函数返回的数字没有间断,并且始终具有连续的排名。
浙公网安备 33010602011771号