select id,name,score
from(
select g.id as id,name,score,dense_rank()over(partition by language_id order by score desc) as rk
from grade g
inner join language l
on g.language_id=l.id) as t
where rk=1 or rk=2
order by name,score desc,id