select * from (
select 
ei.tag,
er.uid,
rank() over(partition  by ei.tag order by max(er.score) desc,min(er.score) desc,er.uid desc ) ranking
from exam_record er,examination_info ei
where er.exam_id = ei.exam_id
group by ei.tag,er.uid) t
where t.ranking<=3

捞出每类试卷排名前三名的最重要是使用窗口函数根据试卷类别分桶,再按照最高得分、最低得分、uid降序排序即可比较出相同记录下最高得分者。