select t.id,name,score from (
select id,language_id,score,
dense_rank() over(partition by language_id	order by score desc) as rn
from grade ) t
join language l on t.language_id=l.id
where rn<=2
order by name,score desc,t.id;