sql语句 每科成绩的前三名

假如我有一个数据表,表有一个id字段,一个科目字段,一个成绩字段,一个学生名字段,我想在表中找出每个科目的前三名,应怎么写sql语句?是mysql数据库... 假如我有一个数据表,表有一个id字段,一个科目字段,一个成绩字段,一个学生名字段,我想在表中找出每个科目的前三名,应怎么写sql语句?
是mysql数据库
展开
 我来答
风清月朗z0
2016-06-21 · TA获得超过545个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:163万
展开全部
可以用row_number函数来解决。
1、创建测试表,插入数据:
create table sc
(id int,
name varchar(20),
class varchar(20),
score int);

insert into sc values (1,'badkano','一年一班',100)
insert into sc values (2,'百度知道团长','一年一班',99)
insert into sc values (3,'du小短','一年一班',95)
insert into sc values (4,'du小小动','一年一班',97)
insert into sc values (5,'du小智','一年一班',80)
insert into sc values (6,'吕布','一年二班',67)
insert into sc values (7,'赵云','一年二班',90)
insert into sc values (8,'典韦','一年二班',89)
insert into sc values (9,'关羽','一年二班',70)
insert into sc values (10,'马超','一年二班',98)
2、查询每个班级的前三名,可用语句:

select * from
(select row_number() over (partition by class order by score desc) 排名,* from sc) t
where 排名<=3 order by class asc,score desc
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式