重置配置单元中的排名

时间:2016-07-01 14:10:29

标签: hadoop hive dense-rank

我想按如下方式对数据进行分区。但正如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

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 ;

enter image description here

答案 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