![700c54de9f0106deaf4d889286cc5c15.gif](https://img-blog.csdnimg.cn/img_convert/700c54de9f0106deaf4d889286cc5c15.gif)
![e6d38c91d0f9847fbcf32d8eb294b8fa.png](https://img-blog.csdnimg.cn/img_convert/e6d38c91d0f9847fbcf32d8eb294b8fa.png)
一、表名和字段
–1. 学生表 student (s_id,s_name,s_birth,s_sex) –学生编号,学生姓名,出生年月,学生性别
–2. 课程表 course (c_id,c_name,t_id) –课程编号,课程名称,教师编号
–3. 教师表 teacher (t_id,t_name) –教师编号,教师姓名
–4. 成绩表 score (s_id,c_id,s_score) –学生编号,课程编号,分数
具体详情看 Python 之 MySql 每日一练 00
二、Mysql 题目
按各科成绩进行排序,并显示排名(Score 重复时保留名次空缺)
三、Mysql 分析
1、用到的表为 score
2、group by x,y
GROUP BY X, Y意思是将所有具有相同 X 字段值和 Y 字段值的记录放到一个分组里。
3、left join
score a left join score b on a.c_id = b.c_id and a.s_score < b.s_score
是循环 a 表中的全部行,与 b 表第一行比,显示出满足条件的行,行的列包括 b 第一行内容
循环 a 表中的全部行,与 b 表中第二行比,显示出满足条件的行,行的列包括 b 第二行内容
……
选好 a 表中的全部行,与 b 表中最后一行比.
这里主要是为了找出大于 a 同科成绩的人,统计后 + 1 ,即为a 的科目排名
四、Mysql 方案
1、Mysql 方案
![0e84fe6e713155ef7a80f07a8270515d.png](https://img-blog.csdnimg.cn/img_convert/0e84fe6e713155ef7a80f07a8270515d.png)
2、Mysql 结果:
![c589996eb050950dd4470c32a4138f56.png](https://img-blog.csdnimg.cn/img_convert/c589996eb050950dd4470c32a4138f56.png)
>>>Python 之 MySql 每日一练 18