你的位置:首页 > 软件开发 > 数据库 > 好用的排名函数~ROW_NUMBER(),RANK(),DENSE_RANK() 三兄弟

好用的排名函数~ROW_NUMBER(),RANK(),DENSE_RANK() 三兄弟

发布时间:2016-02-05 16:00:03
排名函数三兄弟,一看名字就知道,都是为了排名而生!但是各自有各自的特色!以下一个例子说明问题!(以下栗子没有使用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 (#换成@)。