查询每个班级语文前三的学生

查询每个班级语文前三的学生

sql table

班级 学生 科目 分数

一班 小红 数学 90

一班 小红 语文 51

一班 小红 英语 70

一班 小刚 数学 68

一班 小刚 语文 53

一班 小刚 英语 74

二班 小明 数学 84

二班 小明 语文 63

二班 小明 英语 76

二班 小楚 数学 84

二班 小楚 语文 75

这个怎么用sql 写啊

帆软用户77r8vnVzDX 发布于 2023-1-28 20:13 (编辑于 2023-1-28 20:14)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
用户CKn4B8768Lv2见习互助
发布于2023-1-28 20:55(编辑于 2023-1-28 20:55)

我用的是sql server 

select * from 

(select row_number()over(partition  by [科目],[班级] order by [分数] desc ) 排名  , 

* from table

where [科目]='语文' ) tt   --先按科目和班级分组对分数进行排序

where [排名]<=3  --筛选出小于3的序号

  • 帆软用户77r8vnVzDX 帆软用户77r8vnVzDX(提问者) SELECT * FROM ( SELECT *, ROW_NUMBER ( ) OVER ( PARTITION BY 班级 ORDER BY 分数 DESC ) AS ord FROM 表名 WHERE 科目 = \'语文\' ) AS r WHERE r.ord <=3;
    2023-01-29 13:32 
  • 1关注人数
  • 330浏览人数
  • 最后回答于:2023-1-28 20:55
    请选择关闭问题的原因
    确定 取消
    返回顶部