SELECT 
    grade_rank.id 
    ,language.name
    ,grade_rank.score 
FROM 
(
    SELECT 
        * 
        ,dense_rank() over(partition by language_id order by score desc) as score_rank 
    FROM 
        grade 
) AS grade_rank 
JOIN 
    language 
ON 
    grade_rank.language_id = language.id 
WHERE 
    score_rank <= 2
ORDER BY 
    language.name ASC, 
    grade_rank.score DESC