当前位置: 代码迷 >> Sql Server >> 新生关于group by子句
  详细解决方案

新生关于group by子句

热度:102   发布时间:2016-04-27 12:03:39.0
新生求教:关于group by子句
有表如下:
SQL code
学生成绩表(stuscore):姓名:name 课程:subject分数:score学号:stuid张三 数学 89 1张三 语文 80 1张三 英语 70 1李四 数学 90 2李四 语文 70 2李四 英语 80 2


要求:计算每个人的总成绩
方法一:
SQL code
select distinct t1.name,t1.stuid,t2.allscore from  stuscore t1,(    select stuid,sum(score) as allscore from stuscore group by stuid)t2where t1.stuid=t2.stuidorder by t2.allscore desc


方法二:
SQL code
 select stuid,name,sum(score) as allscore from stuscore group by stuid,name



我经常用方法二,难道真的影响查询结果的准确?!!!
好担心,项目都写了一半了

------解决方案--------------------
select stuid,max(name),sum(score) as allscore from stuscore group by stuid

我一般这样写,姓名容易重名,学号不会重
------解决方案--------------------
是的,会影响的
你的第二个语句是根据stuid,name
这两个字段来分组的,如果name 有重名的情况就会出现错误结果


------解决方案--------------------
但是如果你能保证id 和name是一对一对应的,就没有问题
------解决方案--------------------
探讨
select stuid,max(name),sum(score) as allscore from stuscore group by stuid

我一般这样写,姓名容易重名,学号不会重
  相关解决方案