数据库求topN问题

有如下数据表

image.png

求每门课程成绩的前两名
通过窗口函数实现
select 课程号,学号,成绩
from (
select *,row_number() over (PARTITION by 课程号 order by 成绩 desc) as ranking
from score) as a
where ranking <=2;

测试结果

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CREATE TABLE student(sno VARCHAR(10) PRIMARY KEY,sname VA...
    lifeline张阅读 8,669评论 0 1
  • 一、经典45题之1-20题 myql数据源可视化Navicat 总结:开始看题的看到题目就有种无力感,不知道怎么去...
    戈小蓓阅读 2,948评论 0 0
  • 建表create table student(s_id string,s_name string,s_birth ...
    VincentLeon阅读 1,183评论 0 0
  • SQL窗口函数 partition by order by rank, dense_rank, row_numbe...
    Carver_阅读 2,999评论 0 1
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 9,770评论 0 13