SQL题,Python做

系统 1450 0

SQL题,Python做_第1张图片

01 问题描述

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

SQL题,Python做_第2张图片

02 解题思路

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

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

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

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

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

03 解题代码

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

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

SQL题,Python做_第3张图片

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

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

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

640?wx_fmt=png

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

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

SQL题,Python做_第4张图片

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

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

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

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论