SQL题,Python做

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

02 解题思路
使用Python来解决这个问题,大概的思路如下:
首先筛选出课程成绩小于等于80的列(布尔选择)。
取这些列的学生姓名的唯一值。
这些学生姓名就是不符合条件的,我们反选符合条件的。
最后用groupby求和即可完成。
03 解题代码
① 通过布尔选择成绩小于等于80的列。
data[data['score'] <= 80]
其实通过结果可以看出,张三和李四就是不符合条件的学生了。
② 获取不符合条件的学生姓名唯一值
data[data['score'] <= 80]['name'].unique()
③ 我们只需反选不符合条件的学生姓名列,就可以筛选出符合条件的学生的成绩单了。
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())]
④ 最后,我们使用groupby就可以完成整个题目的要求了。
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())].groupby('name')['score'].sum()
作者:罗罗攀
想学习数据分析的小伙伴 添加微信:lovedata19 备注「B站」即可