select 
    t2.id,
    t3.name,
    t2.score
from (
    select
        *,
        dense_rank() over(partition by t1.language_id order by t1.score desc) as rk
    from
        grade t1
) t2
left join
    language t3
on 
    t2.language_id = t3.id
where
    t2.rk <= 2
order by 
    t3.name asc,
    t2.score desc