# 取出每个岗位id分数排名前二的用户,使用dense_rank()
select id, language_id, score
from (
    select *, dense_rank()over(partition by language_id order by score desc) rank_s
    from grade
) t1
where rank_s in (1, 2)
# 连接上表和language表,获取name字段
select t2.id, name, score
from (
    select id, language_id, score
    from (
        select *, dense_rank()over(partition by language_id order by score desc) rank_s
        from grade
    ) t1
    where rank_s in (1, 2)
) t2
join language l
on t2.language_id = l.id
order by name, score desc;