01 問題描述
這個(gè)SQL題來源于自己的 Python 學(xué)習(xí)交流群,具體是這樣的:用一條SQL語句查詢出每門課都大于80的學(xué)生姓名和總成績。
02 解題思路
本人使用Python來解決這個(gè)問題,大概的思路如下:
-
首先篩選出課程成績小于等于80的列(布爾選擇)。
-
取這些列的學(xué)生姓名的唯一值。
-
這些學(xué)生姓名就是不符合條件的,我們反選符合條件的。
-
最后用groupby求和即可完成。
03 解題代碼
① 通過布爾選擇成績小于等于80的列。
data[data['score'] <= 80]
其實(shí)通過結(jié)果可以看出,張三和李四就是不符合條件的學(xué)生了。
② 獲取不符合條件的學(xué)生姓名唯一值
data[data['score'] <= 80]['name'].unique()
③ 我們只需反選不符合條件的學(xué)生姓名列,就可以篩選出符合條件的學(xué)生的成績單了。
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())]
④ 最后,我們使用groupby就可以完成整個(gè)題目的要求了。
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())].groupby('name')['score'].sum()
04 最后
公眾號后臺回復(fù)【入群】,加入學(xué)習(xí)交流群,一起交流學(xué)習(xí)吧~
如果有更好的方法,也可以評論區(qū)留言告訴我哦~
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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