通过子查询中使用窗口函数进行筛选

考试分数(三)

https://www.nowcoder.com/practice/b83f8b0e7e934d95a56c24f047260d91

SELECT
    id,
    name,
    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 rk
    FROM grade g
    JOIN language l
        ON g.language_id = l.id
) t1
WHERE rk <= 2
ORDER BY name, score DESC, id

非常典型的子查询中的筛选,需要注意的地方在于子查询中的变量名和主查询中的变量名需一致。此外两个表中有相同列名的列但是不是连接列时,似乎在未命名的情况下直接同时查询两个列会报错,比如本题中的grade.id和language.id。

全部评论

相关推荐

今天投了小鹏,收到了AI面,大概会问哪些啊?
期末一定及格:总共4个部分,心理测评、行测、然后就是问岗位、对岗位的理解、过往遇到了哪些难点怎么解决,很简单,没有什么特别专业的问题,都是一些综合素质相关的
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务