select *
from (select rank() over(partition by a.subject order by a.score desc) rk,
a.*
from xgj_2 a) t
where t.rk <= 3;
rk SCORE SUBJECT
1 1 100 数学
2 2 90 数学
3 3 80 数学
4 1 88 语文
5 2 77 语文
6 3 70 语文
rank函数是跳跃排序,有两个第二名时接下来就是第四名