一张表存好几科的成绩,字段为 id、sid(学号)、cid(课程id)、score(成绩),怎么用 SQL 把每一科的前三名筛选出来?
考察说明
考察窗口函数、分组排名以及 SQL 查询设计能力
回答思路
- 能识别使用窗口函数 ROW_NUMBER 或 RANK 按课程分组排名
- 正确处理并列名次的场景,决定用 RANK、DENSE_RANK 还是 ROW_NUMBER
- 能写出完整的查询语句并在外层过滤排名不大于三
- 能解释窗口函数的执行逻辑和替代方案,如自连接或用户变量
- 注意性能与可读性,必要时说明索引建议
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。