題目:在oracle中有一資料表exam_result(成績記錄表),
表中的一條記錄描述了「某個班某個學生某次考試的成績"
create table exam_result
( id number(10) not null, --主鍵
classid number(10) not null, -- 班級id,關聯到班級表
userid number(10) not null, --使用者id,關聯到使用者表
examid number(10) not null, --試卷id,關聯到試卷表
result number(3) --成績
)現在要求統計完成了試卷id為1,2,3的成績的前3名
即完成了試卷id為1的前3名,完成了試卷id為2的前3名,完成了試卷id為3的前3名
select
* from
( select
e.classid,
e.userid,
e.examid,
e.result,
row_number() over (partition by
e.examid
order
bye.examid, e.result
desc
) rn
from
exam_result e
where
e.examid
in(1,2,3)
) where
rn <= 3
mysql分組取每組前幾條記錄
drop table if exists ho archives create table ho archives id mediumint 11 unsigned not null auto increment comment 自增id type smallint 5 unsigned not n...
sql server 分組,取每組的前幾行資料
sql中group by後,獲取每組中的前n行資料,目前我知道的有2種方法 比如有個成績表 裡面有欄位學生id,科目,成績。我現在想取每個科目的頭三名。1.子查詢 select from score s where studentname in select top 3 studentname fr...
sql server 分組,取每組的前幾行資料
sql中group by後,獲取每組中的前n行資料,目前我知道的有2種方法 比如有個成績表 裡面有欄位學生id,科目,成績。我現在想取每個科目的頭三名。1.子查詢 select from score s where studentname in select top 3 studentname fr...