1樓:殤忄路
select test1.studentname, test1.score, test1.class
from (select studentname,score,
class,
row_number() over(partition by class order by class, score desc) row_num
from table_name) test1where test1.row_num <= 3order by test1.class, test1.studentname
看看是不是你要的,這用到了分組排序編號
2樓:匿名使用者
有一種比較中規中矩的辦法:
先把班級列表插入一張臨時表:
select distinct(class) from table into #abc
用遊標迴圈這張臨時表,把每個班級成績前三的人取出來,插入另外一張臨時表:
insert into #result select top 3 * from table where class = @class order by score desc
最後把#result表select出來
看樓下有沒有更簡便的辦法,可以不用遊標
sql資料庫怎麼實現分組並取每組的前1條語句,按日期排序?
3樓:果樹上的小黑貓
select * from
(select row_number() over(partition by '分組' order by '日期') as rownum -- 排序並分組
, * -- 所需顯抄示的欄位from 表
) as t
where t.rownum = 1
對每組的資料按日期排序並加上行號
取出時只取行號為1,也就是第一條資料。
4樓:匿名使用者
select top 1 * from 表 group by 分組條件 order by 日期
sql 分組查詢 分組查詢查詢每組的前幾條資料
5樓:匿名使用者
sqlserver:
select * from (
select *,row_number() over(partition by 分組
抄列襲 order by 組內排序列) as rn from table
) as a where rn<=2
6樓:匿名使用者
where rownum<=行數
7樓:匿名使用者
where rownum <= 數字 你懂了嗎?
sql按欄位分組,並且找出每組的第一條資料
8樓:匿名使用者
不知道你什
麼資料庫,給出sqlserver和oracle的select 星期,字母
from
(select rank() over(partition by 星期 order by 字母 desc) id,*
from 表) t1
where id=1
或者select 星期,max(字母)
from 表
group by 星期
9樓:匿名使用者
select 星期,max(字母) as 字母 from 表 group by 星期
sql查詢分組後每組某欄位值最大的一行所有列
你好師姐 create table a address char 2 fenshu varchar 8 insert into a values a1 s1 insert into a values a1 s2 insert into a values a2 s3 insert into a val...
在access中怎麼寫sql查詢語句,select查詢出
由於sql語言處理問題的方式是面向記錄 集合 的。解決排名這類問題對於sql來說確實頭疼,分組排名就更不用說了!為了解決排名問題大型資料庫系統為使用者提供了rank rownumber等函式,但是access不支援排名 開窗等這類函式,一般建議用程式設計方式解決,例如vba等。這個問題確實不好回答。...
sql語句中怎麼實現in中的模糊查詢
where substr phone,0,3 in 134 135 通過擷取phone的前三位,要學會變通。模糊查詢要活用啊。where phone like 13 45 這樣可以去除134或135開頭的資料。使用正規表示式試試,mysql支援。你用的oracle嗎?是的話請追問,where條件後用...