SQL查詢每門課程的前幾名

2021-06-28 11:24:40 字數 1205 閱讀 7345

sql server查詢每門課程的前兩名的學生編號,課程編號,成績並排序。

在sql server 資料庫中,有乙個表studentachievement(學生成績),

它有三個字段:studentid(

varchar

(8),學生編號),courseid(

varchar

(10),課程編號),achievement(

int ,成績),

寫一條sql語句,篩選出每門課程的前兩名的學生編號,課程編號,成績並排序。

--方法一

--將每科前兩名學生的

id取出

/*這是個自連線問題,可以這樣想,就是把

studentachievement

表看成兩個表,a和

b, a

取的是b

表中篩選出來的

id,而

b表中篩選出來的

id則要靠a中的

courseid

來篩選, 即

a表裡選出來的是和b表

courseid

相同的,但在

b表中佔前兩項的值。

*/select*

from studentachievement a

where studentid in

(select

top 2 studentid

from studentachievement b

where b.courseid = a.courseid

order

by b.achievement desc)

order

by a.courseid, a.achievement desc

--方法二

--以科目,按成績給記錄編號,然後取出編號

<=2

的,就是每科前兩名

select*

from studentachievement a

where

(select

count

(*)

from studentachievement b

where b.courseid = a.courseid

and b.achievement >= a.achievement)

<= 2

order

by a.courseid, a.achievement desc

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...

求每門課的第一名的簡單sql語句

create table stu2 stu name varchar 20 lesson varchar 10 stu score tinyint unsigned insert into stu2 values 張三 數學 90 insert into stu2 values 張三 語文 50 i...

SQL查詢前幾條資料的方法

sql在不同資料庫查詢前幾條資料 1.oracle select from table1 where rownum n hql from table1 t order by t.createtime desc where rownum n 2.informix select first n from...