首页 > 解决方案 > Hive/Spark 重复密集排名 N 次

问题描述

我有一张桌子,我需要将等级/密集等级值重复 n 次。我看过一些帖子,其中编号由某个分区重新开始,但就我而言,我没有要分区的列。

我正在寻找这样的东西

在此处输入图像描述

这就是我目前拥有我的代码的方式

WITH d_rank_tbl AS(
SELECT
  id,
   1+ (dense_rank() over (order by id) - 1) % 10 as d_rank
FROM id_bucket)
SELECT
  id,
  dense_rank() over (partition by d_rank order by rand()) 
FROM d_rank_tbl

标签: sqlapache-sparkhive

解决方案


那么算术呢?

select t.*,
       floor((row_number() over (order by id) + 2) / 3) as d_rank
from id_bucket;

+ 2所以编号从而1不是开始0


推荐阅读