亚马逊Redshift排名组

时间:2017-10-30 09:31:53

标签: sql amazon-redshift dense-rank

我试图在前10名进行排名,然后将剩余的1000组(基于数量)分组

以下是预期的结果,最简单的方法是什么?

期望的结果

desired results

我可以使用以下内容将音量排名完全降低,但是想要将其排序超过10的排名

DENSE_RANK() over (PARTITION BY date ORDER BY count (DISTINCT volume_key)  DESC)as rnk_loc_Vol 

1 个答案:

答案 0 :(得分:0)

您可以尝试先使用常规函数(原始等级)进行排名,然后在每一行旁边获得第十个记录的音量并生成另一列(最终等级),即第10个记录之间的差值的1到10或11 +整数除法音量和行的音量为1000.

with 
ranked_entries as (
    select *
    ,dense_rank() over (partition by date order by volume desc) as raw_rnk
    from tbl
)
,tenth_entry as (
    select *
    ,min(case when raw_rnk<11 then volume end) over (partition by date) as tenth_record_volume
    from tbl
)
select *
,case 
    when raw_rnk<11 then raw_rnk 
    else 11+(tenth_record_volume-volume)/1000 
 end as final_rnk
from tenth_entry

(尚未测试)