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() 在一定的排序方式 分数相同的排名相同 。后面会一直排下去