一开始没理解题意,尝试了一种很复杂的方法,发现求不出结果。 后来发现尝试了一下直接在窗口函数中使用max,min统计,发现可行(于是打开了新世界的大门。 结果将本地代码复制到牛客网时把第一个max(score)的max去掉了。就陷入了疯狂报错。对比了评论区的大佬们才知道,一定要有max才可以。

select tid,uid,ranking from (
select tag tid,uid,
dense_rank()over(partition by tag order by 
                 max(score) desc,
                 min(score) desc,
                 uid desc ) ranking
from examination_info e1 
left join exam_record e2
on e1.exam_id=e2.exam_id
group by tag,uid
) a
where ranking <=3