mysql 排名_Python 之 MySql 每日一练 19:各科成绩排名统计

700c54de9f0106deaf4d889286cc5c15.gif
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

2、Mysql 结果:

c589996eb050950dd4470c32a4138f56.png

>>>Python 之 MySql 每日一练 18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值