SELECT
t.tag,
 t.uid,
t.m
from(
select
e2.tag,
e1.uid,
dense_rank()over(partition by e2.tag order by max(e1.score) desc,min(e1.score) desc,e1.uid desc)  as m 
from exam_record e1 left join examination_info e2 on e1.exam_id=e2.exam_id
group by e2.tag,e1.uid
) as t 
WHERE
t.m<=3

看似简单,其实挺陷阱的,这种题型也挺少见的
按照 tag 进行分组,按照每个人最大分,最小分及用户ID排序
因为有聚合函数要分组
group by tag 和 uid  每个人的TAG 最高分 最小分等