回 帖 发 新 帖 刷新版面

主题:一道关于SQL的问题(答对有分)

分数  班级  姓名
60    1班   张三
40    1班   李四
60    1班   王五
50    2班   刘一
20    2班   吴涛
43    2班   将二
30    3班   李力
79    3班   小煤
80    3班   刘涛

想写一个sql语句查询结果如下:
分数  班级  姓名   所在班级总分
60    1班   张三   
40    1班   李四   160
60    1班   王五   
50    2班   刘一   
20    2班   吴涛   113
43    2班   将二   
30    3班   李力   
79    3班   小煤   189
80    3班   刘涛   

也就是说想在查询后多一列“所在班级总分”,而且只能在每组的一条记录中显示出来,该怎么写呀?
测试数据
        create table 表(分数 int,班级 varchar(10),姓名 varchar(10))
insert into 表 values (60,'1班','张三')
insert into 表 values (40,'1班','李四')
insert into 表 values (60,'1班','王五')
insert into 表 values (50,'2班','刘一')
insert into 表 values (20,'2班','吴涛')
insert into 表 values (43,'2班','将二')
insert into 表 values (30,'3班','李力')
insert into 表 values (80,'3班','刘涛')
请验证无误后跟贴,谢谢!

回复列表 (共6个回复)

沙发

select e.分数,e.班级,e.姓名,f.总分 from 表 e left join
(
select * from  (select *,(select sum(分数) from 表 b where a.班级=b.班级)as 总分 from 表 a) c
where c.姓名 in ( select top 1 姓名 from 表 d where c.班级=d.班级)
) f on e.姓名=f.姓名

板凳

不错!正确!
谢谢!
加你30分都嫌少了啊.

3 楼

给分不给分并不重要,重要的是我的回答能否让你得到帮助!嘿嘿!!

4 楼

兄弟啊.
不对啊
我的总分是放在对应的每个班级的第二个学生后面
你的自连接得到的总分都放在第一个学生后面了啊

5 楼

不是吧,那你要是4个人呢?放什么地方?我怀疑你是故意出难题啊,你放什么地方总得有个规律吧??

6 楼

没有啊
我拿到的题目就这样对应着的,我以为应该是要求吧
我觉得你说地有理.呵呵
谢谢了啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册