select * from (select row_number() over( partition by t.s_kc order by t.s_grade desc) no, t.* from table t ) where no <=2
SELECT *FROM ( select 科目,成绩,学号, dense_rank() over (partition by 科目 order BY 成绩 asc nulls last) 排名 FROM TABLE) WHERE 排名<=2;该语句包括了成绩一样,也就是并列名次的
刚才写错了,得排倒序 SELECT *FROM ( select 科目,成绩,学号, dense_rank() over (partition by 科目 order BY 成绩 desc nulls last) 排名 FROM TABLE) WHERE 排名<=2;该语句包括了成绩一样,也就是并列名次的
来个不一样的吧select * from 成绩表 a where 学生ID in ( select 学生ID from ( select * from 成绩表 order by 成绩 desc ) where a.科目=科目 and rownum<=2 )
(select row_number() over( partition by t.s_kc order by t.s_grade desc) no, t.* from table t )
where no <=2
select 科目,成绩,学号,
dense_rank() over (partition by 科目 order BY 成绩 asc nulls last) 排名
FROM TABLE) WHERE 排名<=2;该语句包括了成绩一样,也就是并列名次的
SELECT *FROM (
select 科目,成绩,学号,
dense_rank() over (partition by 科目 order BY 成绩 desc nulls last) 排名
FROM TABLE) WHERE 排名<=2;该语句包括了成绩一样,也就是并列名次的
from 成绩表 a
where 学生ID in
(
select 学生ID
from
(
select * from 成绩表 order by 成绩 desc
)
where a.科目=科目
and rownum<=2
)