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 最后
公眾號后臺回復【入群】,加入學習交流群,一起交流學習吧~
如果有更好的方法,也可以評論區留言告訴我哦~
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
