我想为每个分区选择rank()函数的3个最佳结果
例如,在此查询中:
SELECT id, rank() over (PARTITION BY year order by ...) as rank
FROM table1
GROUP BY year
我希望每年排名3位。
我可以通过创建一个新的来管理它:
Select *
from ...
where rank <= 3
但如果我有一些平等,我每年会得到超过3行。
有人知道如何解决这个问题吗?
答案 0 :(得分:2)
我们没有太多关于您的表格和查询结构的信息,但作为一般解决方案,我建议添加row_number() over (ORDER BY ... desc) as rn
并使用where rn = 1
进行过滤,例如here