Amazon Redshift 排名组

Amazon Redshift rank group

我正在尝试在 1 号 10 上进行排名,然后将剩余的以 1000 为一组进行分组(基于数量)

下面是想要的结果,最简单的方法是什么?

想要的结果

我可以使用以下方法一直降低音量排名,但我想对排名超过 10 的任何东西进行分组

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

您可以先尝试使用常规函数进行排名(原始排名),然后获取每行旁边的第十条记录的数量并生成另一列(最终排名),即 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

(虽然还没有测试)