-- 2.去除不符合排名的数据后排序
SELECT
id,
name,
score
FROM
(
-- 1,已存在并行排名的方式查出来
SELECT
g.id,
l.name,
g.score,
DENSE_RANK() OVER (
PARTITION BY l.name
ORDER BY
g.score DESC) t
FROM
`language` l
INNER JOIN grade g ON
l.id = g.language_id
) tmp
WHERE
tmp.t<3
ORDER BY
name ASC,
score DESC