查詢各科成績前3和第3的學生(SQL)

2021-08-17 10:35:05 字數 1307 閱讀 1819

資料庫面試題:

其他關聯表這裡不一一寫出,僅寫出關鍵表(score)成績表

成績記錄id

scoreid

學生id

userid

課程id

scoureid

成績score

現需要求出各科成績前三名的學生和成績,與相應的課程。

實現思路

用課程id自關聯一次成績表,如果相應課程成績高則排名越高。

select * from `score` a where 

(select count(*) from `score` b where a.`sourceid`= b.`sourceid` and b.`score`>a.`score`)<3 -- 即成績前3

-- and (select count(*) from `score` b where a.`sourceid`= b.`sourceid` and b.`score`>a.`score`)>1-- 即成績為第2名以後

order by sourceid,score desc;

顯示結果:

又需要的可以嘗試一下,網上找了很多解決辦法,要麼使用高階函式,要麼邏輯很複雜,以下是建表語句

create table `score` (

`scoreid` int(11) not null auto_increment,

`sourceid` int(11) default null,

`userid` int(11) default null,

`score` int(11) default null,

primary key (`scoreid`)

) engine=innodb auto_increment=17 default charset=utf8;

相應資料sql:

insert  into `score`(`scoreid`,`sourceid`,`userid`,`score`) values (1,1,1,60),(2,2,1,80),(3,3,1,95),(4,1,2,75),(5,2,2,85),(6,3,2,90),(7,4,1,89),(8,4,2,88),(9,1,3,78),(10,2,3,87),(11,3,3,98),(12,4,3,76),(13,1,4,67),(14,2,4,76),(15,3,4,88),(16,4,4,77);

sql查詢出各科成績最好的學生資訊

1.相關資料表 score表 user 表 sql語句如下 複製 如下 www.cppcns.com 查詢出各科成績最好的學生資訊 自連線 select top 1 from score b where b.s程式設計客棧corename 數學 order by b.score desc selec...

找出第3名學生的成績

題目出處 桂電oj,description 計算機創新工程訓練基地進行完招新開始後,想知道本次考試第3名學生的成績是多少?如果最高分有好多個學生,則相同成績的學生都算第一名 同理,如果第二高分的有多個學生,都算第二名。當然這是簡單題,請你快速編乙個程式找到第3名的成績。input 輸入 輸入有一組,...

習題 22 找出第3名學生的成績

習題 22 找出第3名學生的成績 acm大學剛考完大學英語4級考試,想知道全校第3名學生的成績是多少?如果最高分有好多個學生,則相同成績的學生都算第一名 同理,如果第二高分的有多個學生,都算第二名。當然這是簡單題,請你快速編乙個程式找到第3名的成績。輸入 輸入有多組,每組有2行,第一行是學生人數n ...