0

我想对数据进行分区,如下所示。但正如链接中给出的那样,没有内置函数可以重新从 1 开始重新设置排名。我试过了ROW_NUMBER(), RANK(), DENSE_RANK()。那么,谁能告诉我如何实现这一目标?

  Col1     Col2    Rank
cookie1    ABC      1
cookie1    ABC      1
cookie1    EFG      2
cookie1    EFG      2
cookie1    IJK      3
cookie1    IJK      3

cookie2    XYZ      1
cookie2    XYZ      1
cookie2    LMN      2
4

2 回答 2

4

DENSE_RANK() 与 PARTITION BY 子句一起使用。

温度为(

  select Col1      ,Col2  , DENSE_RANK() OVER   

  (PARTITION BY Col1      ORDER BY Col2  ) AS Rank 

  from rnktest 
 )
select *  from temp ;

在此处输入图像描述

于 2016-07-01T14:39:05.217 回答
1

好了,您需要dense_rank按第一列分区并按第二列排序。

select *,dense_rank() over (partition by Col1 order by Col2) as rn from test_rank;

输出:-

cookie1 ABC     1
cookie1 ABC     1
cookie1 EFG     2
cookie1 EFG     2
cookie1 IJK     3
cookie1 IJK     3

cookie2 LMN     1
cookie2 XYZ     2
cookie2 XYZ     2
于 2016-07-03T06:48:25.170 回答