24
2012
08

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)  





版权声明:
作者:真爱无限 出处:http://www.pukuimin.top 本文为博主原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接.
« 上一篇下一篇 »

相关文章:

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。