重置蜂巢中的排名
Reset the rank in hive
我想按如下所示对数据进行分区。但是正如 link 中给出的那样,没有内置函数可以重新从 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
将 DENSE_RANK() 与 PARTITION BY 子句一起使用。
温度为(
select Col1 ,Col2 , DENSE_RANK() OVER
(PARTITION BY Col1 ORDER BY Col2 ) AS Rank
from rnktest
)
select * from temp ;
好了,您需要 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
我想按如下所示对数据进行分区。但是正如 link 中给出的那样,没有内置函数可以重新从 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
将 DENSE_RANK() 与 PARTITION BY 子句一起使用。
温度为(
select Col1 ,Col2 , DENSE_RANK() OVER
(PARTITION BY Col1 ORDER BY Col2 ) AS Rank
from rnktest
)
select * from temp ;
好了,您需要 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