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