查詢乙個字段分組後的前面N行資料

2021-08-19 10:29:56 字數 684 閱讀 9460

sql中group by後,獲取每組中的前n行資料,目前我知道的有2種方法

比如有個成績表: 裡面有欄位學生id,科目,成績。我現在想取每個科目的頭三名。

1.   子查詢

select * from score s where studentname in (

select top 3 studentname from score where s.subjects = subjects 

group by subjects,studentname,score order by score desc)

group by subjects,studentname,score order by subjects,score desc

2.    用rownumber函式

select subjects,studentname,score from 

(select *,

row_number() over(partition by subjects order by score desc) rownum

from score) as s where s.rownum <= 3

group by subjects,studentname,score order by subjects,score desc

以上的2種結果都是一樣的。如果還有其他的方法,以後補充

oracle分組後合併其中乙個字段 (2)

1 select wmsys.wm concat t.org orgs,t.area name from select concat concat b.abbreviation,b.org name org,a.area name area name from t organization b le...

mybati查詢乙個字段出現的是另乙個欄位的值

使用mybatis的時候,查詢列表進行展示,joint bank number欄位總是為空 但是area欄位是沒有資料的,確有資料,很奇怪 最後我只查詢joint bank number欄位,發現,除了area欄位,所有的字段都是空,但是我查的是joint bank number欄位啊,然後我就在考...

mysql多表乙個字段

先執行這三個 show variables like group concat max len 查詢大小 set global group concat max len 10240000 設定大小滿足執行後能夠存放所有的插入語句 set session group concat max len 10...