select  a.id, language.name, a.score
from (select id, language_id, score, dense_rank()over(partition by language_id order by score desc) posn
from grade) a
left join language on a.language_id=language.id
where a.posn<=2
order by language.name asc, a.score desc, a.id asc