sql语句 每科成绩的前三名
假如我有一个数据表,表有一个id字段,一个科目字段,一个成绩字段,一个学生名字段,我想在表中找出每个科目的前三名,应怎么写sql语句?是mysql数据库...
假如我有一个数据表,表有一个id字段,一个科目字段,一个成绩字段,一个学生名字段,我想在表中找出每个科目的前三名,应怎么写sql语句?
是mysql数据库 展开
是mysql数据库 展开
1个回答
展开全部
可以用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
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询