一、知识总结拓展&答案
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。