注意: 是找工作为算法的, 在注册当天完成算法试卷的人, 按所有考试得分的最高分排名, 这是个易错点, 直接根据 job='算法', tag='算法', 过滤score列会得到算法考试的最高分, 而不是所有考试的最高分.

select aa.uid,
    aa.level,
    aa.register_time,
    max(max_score)
from user_info aa
join (
    select *,
    	# 这里是个比较巧妙的地方,通过窗口函数构造一列, 该列为所有用户考试的最高分
        max(score) over(partition by uid) max_score
    from exam_record
) bb on aa.uid=bb.uid
join examination_info cc on bb.exam_id=cc.exam_id
where job='算法'
    and datediff(aa.register_time, bb.submit_time) = 0
    and cc.tag='算法'
group by aa.uid, aa.level, aa.register_time
order by max_score DESC
limit 6, 3