17,140
社区成员




with table_name(id,sc)as(
select 1,90 from dual
union all
select 2,90 from dual
union all
select 3,90 from dual
union all
select 4,77 from dual
)
SELECT id, sc, rank() over(ORDER BY sc DESC) rk, dense_rank() over(ORDER BY sc DESC) drk
FROM table_name;
--结果
ID SC RK DRK
---------- ---------- ---------- ----------
1 90 1 1
2 90 1 1
3 90 1 1
4 77 4 2
--通过这组数据可以看出相同排名后是否跳名次区别而已。
SELECT * FROM (
select T.*,RANK() OVER(PARTITION BY 班级 order by 成绩 desc) RN
FROM T
)WHERE RN<=10
SELECT * FROM (
select T.*,ROW_NUMBER()OVER(PARTITION BY 班级 order by 成绩 desc) RN
FROM T
)WHERE RN<=10