每門課程前兩名 不考慮成績並列情況

2021-10-22 08:38:29 字數 1391 閱讀 6138

課程表的資料:sid是學生id,cid是課程id,score是分數

我們的目的是查出每門課程的前兩名(其實在這個表裡面就是把最後一行去掉就成功了);

sql執行成功,目的達到了;

下面分析原理:

一、where子查詢如果關聯外部表,則在外部執行完後執行

(參考:

執行計畫是這樣的:

二、語句解析:

a.score < b.score,如下圖所示,a表先執行b表後執行,第一條a的資料會關聯b的兩條資料,但是都不滿足a.score < b.score的條件;

不滿足a.score < b.score的話count(1)就是0

然後判斷count(1)<2,第一條a的資料被篩選出來了;

同理,第二條a的資料是「1,82」,a.score < b.score條件會有乙個滿足,count(1)是1,然後判斷count(1)<2,第二條a的資料被篩選出來了;

同理,第七條資料是「3,55」,a.score < b.score條件會有2個滿足,count(1)是2,然後判斷count(1)<2,第七條a的資料被排除了;

最後,如果成績並列怎麼辦,比如第2條資料是「1,83」

a.score < b.score,如下圖所示,a表先執行b表後執行,第2條a的資料會關聯b的兩條資料,但是都不滿足a.score < b.score的條件;

不滿足a.score < b.score的話count(1)就是0

然後判斷count(1)<2,資料被篩選出來了;

如果有1課程有100個並列成績(83分),那麼都會被選出來。

兩名股東起訴Oracle

美國當地時間周二,兩名oracle股東對這家資料庫巨頭及其董事會發起了起訴,稱其在雲業務的潛力上誤導投資者。這起民事訴訟是在美國聖何塞地區法院提起的,它指控甲骨文高管在日常公關中遺漏重要事實,並在2017年做出虛假陳述,以 甲骨文的營收前景一片光明。美國當地時間周二,兩名oracle股東對這家資料庫...

SQL查詢每門課程的前幾名

sql server查詢每門課程的前兩名的學生編號,課程編號,成績並排序。在sql server 資料庫中,有乙個表studentachievement 學生成績 它有三個字段 studentid varchar 8 學生編號 courseid varchar 10 課程編號 achievement...

sql查詢每門課程成績最高的學生

給出資料庫 sco 如下圖 查出每門課程成績最高的學生 1 select b.id,b.kemu,b.name,b.chengji 2from select kemu,max chengji maxc 3from sco group bykemu a,sco b 4where a.kemu b.ke...