你能一条SQL得出这个结果吗
表结构如下
学生ID(s_id)
科目(s_kc)
成绩(s_grade)
用一条SQL语句查出每科目成绩前两名的学生
------解决方案--------------------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
)