select *
from table1 A
where id in (select top 3 id from table1 where banji=A.banji order by chengji desc )
order by banji asc,chengji desc
select *
from table1 A
where not exists
(select 1 from table1 where banji=A.banji and chengji <A.chengji having count(1) <4)
order by banji asc,chengji desc
//下面方法限於沒有重複成績??
成績表: s_score ( s_class, s_id, s_score)
select s_class, s_id, s_score
from s_score r1
where
(
select count(1)
from s_score r2
where r2.s_class=r1.s_class and r2.s_score >= r1.s_score
) <=3 /*這裏的數值表示你想取前幾名*/
order by s_class, s_score