注意: 是找工作为算法的, 在注册当天完成算法试卷的人, 按所有考试得分的最高分排名, 这是个易错点, 直接根据 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



京公网安备 11010502036488号