SQL面试50题-22

链接:https://zhuanlan.zhihu.com/p/43289968

查询所有课程的成绩第2名到第3名的学生信息及该课程成绩(重要 25类似)

1.又要分组又要排序的情况 使用RANK或ROW_NUMBER或DENSE_RANK
SELECT *
,ROW_NUMBER() OVER (PARTITION BY c_id ORDER BY s_score ) ranking
FROM Score
2.取ranking为2和3的学生信息
WHERE ranking in (2,3)

SELECT s.s_id,s.s_name,s.s_sex,s.s_birth,n.c_id,n.s_score,n.ranking
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY c_id ORDER BY s_score ) AS ranking FROM Score) n INNER JOIN Student s ON n.s_id =s.s_id 
WHERE ranking IN (2,3)
ORDER BY n.c_id,n.ranking;
全部评论

相关推荐

头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务