一开始没理解题意,尝试了一种很复杂的方法,发现求不出结果。 后来发现尝试了一下直接在窗口函数中使用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