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