前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL题,Python做

SQL题,Python做

作者头像
罗罗攀
发布2019-08-30 16:33:34
1.6K0
发布2019-08-30 16:33:34
举报
01 问题描述

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

02 解题思路

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

  • 首先筛选出课程成绩小于等于80的列(布尔选择)。
  • 取这些列的学生姓名的唯一值。
  • 这些学生姓名就是不符合条件的,我们反选符合条件的。
  • 最后用groupby求和即可完成。
03 解题代码

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

代码语言:javascript
复制
data[data['score'] <= 80]

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

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

代码语言:javascript
复制
data[data['score'] <= 80]['name'].unique()

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

代码语言:javascript
复制
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())]

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

代码语言:javascript
复制
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())].groupby('name')['score'].sum()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 问题描述
  • 02 解题思路
  • 03 解题代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档