我想按如下方式对数据进行分区。但正如link中给出的那样,没有内置函数可以再次从1开始重置Rank。我已经尝试了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
答案 0 :(得分:4)
将DENSE_RANK()与PARTITION BY子句一起使用。
以temp为(
select Col1 ,Col2 , DENSE_RANK() OVER
(PARTITION BY Col1 ORDER BY Col2 ) AS Rank
from rnktest
)
select * from temp ;
答案 1 :(得分: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