排名函数三兄弟,一看名字就知道,都是为了排名而生!但是各自有各自的特色!以下一个例子说明问题!(以下栗子没有使用Partition By 的关键字,整个结果集进行排序)RANK 每个值一个排名,同样的值排同样的位置,如第一名有2个,下一个值就要排第三,如此类推,表现如下面的 Ra ...
排名函数三兄弟,一看名字就知道,都是为了排名而生!但是各自有各自的特色!以下一个例子说明问题!(以下栗子没有使用Partition By 的关键字,整个结果集进行排序)
RANK 每个值一个排名,同样的值排同样的位置,如第一名有2个,下一个值就要排第三,如此类推,表现如下面的 RandNr 列
DENSE_RANK 每个值一个排名,跟Rank 不一致的地方在于它不跳号,会1,2,3 那样排下来
ROW_NUMBER 每行一个排序值,遇到相同的排序条件的时候,按照顺序给值,对应表现如下面RowNr 列
;WITH CTE1(ID,Col1) AS( SELECT 1 ,'AA' UNION ALL SELECT 1 ,'AA' UNION ALL SELECT 2 ,'BB' UNION ALL SELECT 3 ,'CC' UNION ALL SELECT 3 ,'CC' UNION ALL SELECT 4 ,'DD' UNION ALL SELECT 5 ,'EE')SELECT RANK() OVER (ORDER BY ID) AS RankNr, DENSE_RANK() OVER (ORDER BY ID) AS DenseNr, ROW_NUMBER() OVER (ORDER BY ID) AS RowNr, * FROM CTE1RankNr DenseNr RowNr ID Col1-------------------- -------------------- -------------------- ----------- ----1 1 1 1 AA1 1 2 1 AA3 2 3 2 BB4 3 4 3 CC4 3 5 3 CC6 4 6 4 DD7 5 7 5 EE
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:好用的排名函数~ROW_NUMBER(),RANK(),DENSE_RANK() 三兄弟
关键词:函数
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。