题目
-
题目来源:SQL74 考试分数(三)
-
题目描述
-
两张表


-
所需结果

题解
使用排序窗口函数作为行过滤条件,最后将结果 LEFT JOIN
SELECT t.id, l.name, t.score
FROM (SELECT *,
DENSE_RANK() OVER(PARTITION BY language_id ORDER BY score DESC) rk
FROM grade
) t
LEFT JOIN language l
ON t.language_id = l.id
WHERE t.rk <= 2
ORDER BY l.name, t.score DESC, t.id
本文解析了如何使用SQL的DENSE_RANK窗口函数来筛选出成绩最高的前2名学生,并按语言进行排名。通过LEFT JOIN操作将grade表与language表连接,确保结果直观易读。
349

被折叠的 条评论
为什么被折叠?



