求一求和sql语句

表 成绩表

编号 学号 姓名 科目 成绩
1 001 丁一 数学 102
2 001 丁一 语文 80
3 001 丁一 英语 100
4 001 王二 数学 103
3 001 王二 英语 100
6 001 张三 语文 120
6 001 刘四 语文 107
..........................

要求能输出

编号 学号 姓名 总成绩
1 001 丁一 282
4 001 王二 203
6 001 张三 120
6 001 刘四 107

..........................
要求能输出

学号 姓名 总成绩
001 丁一 282
002 王二 203
003 张三 120
004 刘四 107

编号不是唯一的,我写错了,谢谢

如果是学号唯一的:
select min(编号),学号,min(姓名),sum(成绩) as '总成绩' from 成绩表 group by 学号

如果是姓名唯一的:
select min(编号),min(学号),姓名,sum(成绩) as '总成绩' from 成绩表 group by 姓名
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-11
首先,提两点建议:
(1)数据库中的表名,列名最好不要用中文;
(2)在创建一张面的时候最好按照规范化,如设置主键,有多张表时可设外键等.
如果是按你的要求来做,在SQL Server 2005中有几个排序函数可以帮到你的忙.rank(),row_number()...
第2个回答  2008-04-11
select b.编号,b.学号,b.姓名,b.总成绩
from(
select a.编号,a.学号,a.姓名,sum(a.成绩)over(partition by 成绩)as 总成绩,
rank() over(partition by a.姓名 order by rownum) as num
from 表a
)b
where num = 1
-------------------------------------------------------
lz如果是要每个人第一个编号的话,结果和lz要求的一样

1 001 丁一 282
4 001 王二 203
6 001 张三 120
6 001 刘四 107
第3个回答  2008-04-12
select min(编号),min(学号),姓名,sum(成绩) as '总成绩' from 成绩表 group by 姓名
第4个回答  2008-04-11
select sum(成绩) from 成绩表 group by 姓名
相似回答