SQL题,Python做

640?wx_fmt=png

01 问题描述

这个SQL题来源于自己的 Python 学习交流群,具体是这样的:用一条SQL语句查询出每门课都大于80的学生姓名和总成绩。

640?wx_fmt=png

02 解题思路

本人使用Python来解决这个问题,大概的思路如下:

  • 首先筛选出课程成绩小于等于80的列(布尔选择)。

  • 取这些列的学生姓名的唯一值。

  • 这些学生姓名就是不符合条件的,我们反选符合条件的。

  • 最后用groupby求和即可完成。

03 解题代码

① 通过布尔选择成绩小于等于80的列。

data[data['score'] <= 80]

640?wx_fmt=png

其实通过结果可以看出,张三和李四就是不符合条件的学生了。

② 获取不符合条件的学生姓名唯一值

data[data['score'] <= 80]['name'].unique()

640?wx_fmt=png

③ 我们只需反选不符合条件的学生姓名列,就可以筛选出符合条件的学生的成绩单了。

data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())]

640?wx_fmt=png

④ 最后,我们使用groupby就可以完成整个题目的要求了。

data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())].groupby('name')['score'].sum()
04 最后

公众号后台回复【入群】,加入学习交流群,一起交流学习吧~

如果有更好的方法,也可以评论区留言告诉我哦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值