通过窗口函数排序算出工资排名,再作个表子连接 筛选排名<=2 的即可

select y.id,o,y.score from grade as y join ( select t.id,c.name as o, dense_rank() over(partition by c.name order by score desc ) as 排名 from grade as t join language as c on c.id=t.language_id group by t.id, c.name) as f on y.id=f.id where 排名<=2;