with t1 as (
select a.id, b.name, a.score
from grade as a
left join language as b
on a.language_id = b.id
),
# 按照name进行分组,然后按照score降序进行排序
t2 as (
select id, name, score,
Dense_rank() over (PARTITION BY name ORDER BY score DESC) as score_rank
from t1
)
select id, name, score
from t2
where score_rank <= 2
order by name, score desc, id;

京公网安备 11010502036488号