一、知识总结拓展&答案

1、知识点总结与拓展

就一个核心知识点,分页展示,查看第n页数据,每页m条的公式,该部分实际上是LIMIT (3-1)*3,3。 

2、完整代码

SELECT a.uid,level,register_time,MAX(score) max_score #每个用户的最高分
FROM exam_record a LEFT JOIN  user_info b ON a.uid=b.uid
WHERE DATE_FORMAT(submit_time,'%Y-%m-%d')=DATE_FORMAT(register_time,'%Y-%m-%d') #注册当天完成的试卷记录
AND exam_id IN(SELECT exam_id FROM examination_info WHERE tag='算法')#限定试卷为“算法”
AND a.uid IN (SELECT uid FROM user_info WHERE job='算法') #求职方向为工程师
GROUP BY a.uid
ORDER BY max_score DESC
LIMIT 6,3;# LIMIT (n-1)*m,m 查看第n页数据,每页m条的公式,该部分实际上是LIMIT (3-1)*3,3。 

二、步骤代码

1)找到求职方向为算法工程师,
SELECT uid FROM user_info WHERE job='算法';

2)且注册当天就完成了算法类试卷的人,
SELECT a.uid
FROM exam_record a LEFT JOIN  user_info b ON a.uid=b.uid
WHERE DATE_FORMAT(submit_time,'%Y-%m-%d')=DATE_FORMAT(register_time,'%Y-%m-%d') #注册当天完成的试卷记录
AND exam_id IN(SELECT exam_id FROM examination_info WHERE tag='算法')#限定试卷为“算法”
AND a.uid IN (SELECT uid FROM user_info WHERE job='算法');#求职方向为工程师

3)按参加过的所有考试最高得分的排名(用每个用户的历史考试最高分进行排名)。
SELECT a.uid,level,register_time,MAX(score) max_score #每个用户的最高分
FROM exam_record a LEFT JOIN  user_info b ON a.uid=b.uid
WHERE DATE_FORMAT(submit_time,'%Y-%m-%d')=DATE_FORMAT(register_time,'%Y-%m-%d') #注册当天完成的试卷记录
AND exam_id IN(SELECT exam_id FROM examination_info WHERE tag='算法')#限定试卷为“算法”
AND a.uid IN (SELECT uid FROM user_info WHERE job='算法') #求职方向为工程师
GROUP BY a.uid
ORDER BY max_score DESC;


4)排名榜很长,我们将采用分页展示,每页3条,现在需要你取出第3页(页码从1开始)的人的信息。
SELECT a.uid,level,register_time,MAX(score) max_score #每个用户的最高分
FROM exam_record a LEFT JOIN  user_info b ON a.uid=b.uid
WHERE DATE_FORMAT(submit_time,'%Y-%m-%d')=DATE_FORMAT(register_time,'%Y-%m-%d') #注册当天完成的试卷记录
AND exam_id IN(SELECT exam_id FROM examination_info WHERE tag='算法')#限定试卷为“算法”
AND a.uid IN (SELECT uid FROM user_info WHERE job='算法') #求职方向为工程师
GROUP BY a.uid
ORDER BY max_score DESC
LIMIT 6,3;# LIMIT (n-1)*m,m 查看第n页数据,每页m条的公式,该部分实际上是LIMIT (3-1)*3,3。