求SQL GroupBy 后得到有效数据的所有列数据 有完整测试数据和SQL脚本 谢谢

javamy024 2014-06-07 04:53:42


CREATE TABLE [dbo].[Pub_Test](
[ID] [int] NOT NULL,
[班级] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[学生] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[学号] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[语文分数] [int] NOT NULL,
[数学分数] [int] NOT NULL,
CONSTRAINT [PK_Pub_Test] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO

INSERT INTO [AVAResourcesPlatform].[dbo].[Pub_Test]
VALUES (1 ,'一班' ,'小一' ,'0001' ,60 ,50)
INSERT INTO [AVAResourcesPlatform].[dbo].[Pub_Test]
VALUES (2 ,'一班' ,'小二' ,'0001' ,70 ,60)
INSERT INTO [AVAResourcesPlatform].[dbo].[Pub_Test]
VALUES (3 ,'二班' ,'小三' ,'0001' ,90 ,70)
INSERT INTO [AVAResourcesPlatform].[dbo].[Pub_Test]
VALUES (4 ,'二班' ,'小四' ,'0001' ,50 ,98)
INSERT INTO [AVAResourcesPlatform].[dbo].[Pub_Test]
VALUES (5 ,'二班' ,'小五' ,'0001' ,75 ,72)

GO
select * from [Pub_Test]
select 班级, MAX(语文分数) 语文分数 from [Pub_Test] Group By 班级

-- 查询出每个班级中语文分数最高的记录
--------------------------------------------
-- 二班 90
-- 一班 70
-----------------------------------------------
-- 但是我要的结果为:
--2 一班 小二 0001 70 60
--3 二班 小三 0001 90 70
--应该怎么写呢?
--谢谢

DROP TABLE [dbo].[Pub_Test]
...全文
127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
czfxwpy 2014-06-07
  • 打赏
  • 举报
回复
select *
 from pub_test
where 语文分数 in (
select  MAX(语文分数) 语文分数
 from [Pub_Test]
 Group By 班级
) 
当一个班有两个同分数且都是最高分时,当然也都是第一名咯,我要接分,分,分!!!!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧