SQL43 注册当天就完成了试卷的名单第三页

题目主要信息:

  • 找到求职方向为算法工程师,且注册当天就完成了算法类试卷的人,按参加过的所有考试最高得分排名
  • 排名榜很长,采用分页展示,每页3条,取出第3页(页码从1开始)的人的信息

问题拆分:

  • 用户信息、试卷信息、考试信息分布在三个表中,我们需要依靠exam_id将exam_record表和examination_info e_i表连接在一起,然后依靠uid再连接上user_info表。知识点:join...on...
  • 对每个人的分数信息计算最大值,要以uid分组。知识点:group by
  • 筛选出每组职位是算法,试卷标签是算法且注册日期等于试卷提交日期的信息。知识点:where、date
  • 求最大分数。知识点:max
  • 根据最大分数排序。知识点:order by
  • 输出第三页,每页3条数据,及从第6条开始(0为起点),限制3条。limit 6, 3

代码:

select u_i.uid as uid,
       level, register_time,
       max(score) as max_score
from exam_record e_r join examination_info e_i
on e_r.exam_id = e_i.exam_id
join user_info u_i
on e_r.uid = u_i.uid
where job = '算法'
and tag = '算法'
and date(register_time) = date(submit_time)
group by uid
order by max_score desc 
limit 6, 3