sql查询每个班上成绩最高的学生信息

简介:   sql查询每个班上成绩最高的学生信息 数据库表和数据准备: if exists (select * from sysobjects where id = OBJECT_ID('[classinfo]') and OBJECTPRO...

  sql查询每个班上成绩最高的学生信息

数据库表和数据准备:

if exists (select * from sysobjects where id = OBJECT_ID('[classinfo]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
DROP TABLE [classinfo]

CREATE TABLE [classinfo] (
[id] [bigint]  NOT NULL,
[classID] [bigint]  NOT NULL,
[className] [nvarchar]  (50) NOT NULL,
[stat] [varchar]  (2) NOT NULL DEFAULT (1),
[autoid] [bigint]  IDENTITY (1, 1)  NOT NULL)

alter TABLE [classinfo] WITH NOCHECK ADD  CONSTRAINT [PK_classinfo] PRIMARY KEY  NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [classinfo] ON

INSERT [classinfo] ([id],[classID],[className],[stat],[autoid]) VALUES ( 1,1,N'计算机一班',N'1',1)
INSERT [classinfo] ([id],[classID],[className],[stat],[autoid]) VALUES ( 2,2,N'计算机二班',N'1',2)
INSERT [classinfo] ([id],[classID],[className],[stat],[autoid]) VALUES ( 4,3,N'计算机三班',N'0',3)
INSERT [classinfo] ([id],[classID],[className],[stat],[autoid]) VALUES ( 5,4,N'计算机四班',N'1',4)
INSERT [classinfo] ([id],[classID],[className],[stat],[autoid]) VALUES ( 6,5,N'计算机五班',N'1',6)

SET IDENTITY_INSERT [classinfo] OFF


if exists (select * from sysobjects where id = OBJECT_ID('[stuinfo]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
DROP TABLE [stuinfo]

CREATE TABLE [stuinfo] (
[id] [bigint]  IDENTITY (1, 1)  NOT NULL,
[username] [nvarchar]  (50) NULL,
[userpwd] [nvarchar]  (50) NULL,
[classID] [bigint]  NULL,
[score] [numeric]  (10,2) NULL,
[age] [int]  NULL,
[CreateTime] [datetime]  NULL DEFAULT (getdate()))

alter TABLE [stuinfo] WITH NOCHECK ADD  CONSTRAINT [PK_stuinfo] PRIMARY KEY  NONCLUSTERED ( [id] )
SET IDENTITY_INSERT [stuinfo] ON

INSERT [stuinfo] ([id],[username],[userpwd],[classID],[score],[age],[CreateTime]) VALUES ( 1,N'001',N'0004',1,123.22,25,N'2012/8/24 10:58:10')
INSERT [stuinfo] ([id],[username],[userpwd],[classID],[score],[age],[CreateTime]) VALUES ( 2,N'002',N'154',2,888.00,21,N'2012/8/24 10:58:10')
INSERT [stuinfo] ([id],[username],[userpwd],[classID],[score],[age],[CreateTime]) VALUES ( 3,N'003',N'555',1,888.00,16,N'2012/8/24 10:58:10')
INSERT [stuinfo] ([id],[username],[userpwd],[classID],[score],[age],[CreateTime]) VALUES ( 4,N'004',N'644',2,85.60,18,N'2012/8/24 10:58:10')
INSERT [stuinfo] ([id],[username],[userpwd],[classID],[score],[age],[CreateTime]) VALUES ( 5,N'pkm',N'123',3,46.00,19,N'2012/8/24 10:58:10')
INSERT [stuinfo] ([id],[username],[userpwd],[classID],[score],[age],[CreateTime]) VALUES ( 6,N'pkm001',N'123',3,45.56,19,N'2012/8/24 10:58:10')
INSERT [stuinfo] ([id],[username],[classID],[CreateTime]) VALUES ( 7,N'2012pkm1',1,N'2012/8/24 10:58:10')

SET IDENTITY_INSERT [stuinfo] OFF

查询每班最高分数的sql语句:

select distinct si.id,si.username,si.score,si.classID,ci.className 
from stuinfo as si
inner join
(
select max(score) as score ,classID from stuinfo
group by classID 
)
as c1
on c1.score = si.score
inner join classinfo as ci
on ci.classID = si.classID
order by si.classID


原始数据:


查询结果:

 

 

附:删除重复username记录,只保留最小的id

delete from stuinfo
where id not in
(
select si.id
from stuinfo as si  
inner join  
(  
select min(id) as id ,username from stuinfo  
group by username   
)  
as c1  
on c1.id = si.id  
)
---或者
delete from stuinfo where id not in
(select min(id) from stuinfo group by username)


 

 

 

 

相关文章
|
10天前
|
SQL
sql语句加正则 简化查询
sql语句加正则 简化查询
13 0
sql语句加正则 简化查询
|
28天前
|
SQL
sql server链接查询
sql server链接查询
17 1
|
28天前
|
SQL
sql server简单查询
sql server简单查询
14 1
|
17天前
|
SQL 关系型数据库 MySQL
mysql一条sql查询出多个统计结果
mysql一条sql查询出多个统计结果
13 0
|
28天前
|
SQL
sql高级查询
sql高级查询
12 0
|
29天前
|
SQL 数据库
sql server高级查询,看这篇文章就够了
sql server高级查询,看这篇文章就够了
21 0
|
1月前
|
SQL
T-SQL 语句查询
T-SQL 语句查询
55 0
|
7天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
47 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
17天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0