# 先连接表,把语言和名字对应起来;
# 根据不同语言的学生进行排序
# 取出前两名并排序
select
a.id as id,
a.name as name,
a.score as score
from
(select
g.id as id,
l.name as name,
g.score as score,
dense_rank() over(partition by l.name order by g.score desc) as ranks
from
grade as g
inner join language as l on g.language_id = l.id) a
where
a.ranks in (1,2)
order by
name asc,score desc,id asc;

京公网安备 11010502036488号