oracle 進行分組並取每組中的前n條記錄

2022-02-23 08:30:56 字數 867 閱讀 2387

題目:在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...