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降序排序即可比较出相同记录下最高得分者。