select id,name,score
from
(select id,name,score,
dense_rank() over(partition by name order by score DESC) as rk
from 
(select A.id,B.name,A.score
from grade A
left join language B
on A.language_id = B.id) as C) as D
where rk = 1
or rk = 2
order by name ASC,score DESC,id ASC