我试图在前10名进行排名,然后将剩余的1000组(基于数量)分组
以下是预期的结果,最简单的方法是什么?
期望的结果
我可以使用以下内容将音量排名完全降低,但是想要将其排序超过10的排名
DENSE_RANK() over (PARTITION BY date ORDER BY count (DISTINCT volume_key) DESC)as rnk_loc_Vol
答案 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
(尚未测试)