sql server 中用于排名的三个函数 row_number() ,RANK() 和 DENSE_RANK()

row_number()  ,RANK() 和  DENSE_RANK()  三个配合over()  使用排名 只是只是计算方式不一样,语法基本一样

语法: ROW_NUMBER() OVER (ORDER BY 排名的字段) 例如:

select  OrderAmount ,
row_number() over(order by OrderAmount desc) as  row_number  ,
RANK() over(order by OrderAmount desc) as  RANK  ,  
DENSE_RANK() OVER (ORDER BY OrderAmount desc ) AS DENSE_RANK 
 from rrs_DeliveryOrder 

下面是结果对比一下就很清楚

row_number()  按一定的排序方式 一直往下排  值相同的排在前面的排名靠前

RANK  在一定的排序方式 一直往下排,分数相同的该排名的最高排名算。

DENSE_RANK() 在一定的排序方式 分数相同的排名相同 。后面会一直排下去

原文地址:https://www.cnblogs.com/cl1006/p/7761823.html