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, ...