select b.id, a.name, b.score from language a join ( select id, language_id, score, dense_rank() over(partition by language_id order by score desc) as ranks from grade order by id asc ) b on a.id = b.language_id where ranks in (1, 2) order by name asc, score desc, id asc