美文网首页
SQL题,Python做

SQL题,Python做

作者: 罗罗攀 | 来源:发表于2019-08-19 11:13 被阅读0次
    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()
    
    04 最后

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

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

    相关文章

      网友评论

          本文标题:SQL题,Python做

          本文链接:https://www.haomeiwen.com/subject/ptjmlctx.html