比如:我做一个表“学生成绩表”
字段有:学号、姓名、语文、数学、英语、总分,总共六个字段,现在是有学生比如:学号:1、姓名:张三、语文:65、数学:75、英语:80;学号:2、姓名:李四、语文:60、数学:70、英语:80;学号:3、姓名:王麻子、语文:68、数学:72、英语:85;那么我怎么求他们的总分是多少?还有三个人的数学总分是多少、语文总分是多少、英语总分是多少、和他们的总分和是多少?再拿总分来平均分给他们,这样知道他们的平均分?谢谢!

解决方案 »

  1.   

    数据库操作吗??加入你用的是MySQL:
    单人总分字段允许空值的话,先把各科成绩插入学生成绩表,再用UPDATE计算单人的总分:
    UPDATE `学生成绩表` SET `总分` = `语文` + `数学` + `英语`;计算所有学生单科总分或者三科总分:
    SELECT SUM(`语文`) AS `语文总分` FROM `学生成绩表`;
    SELECT SUM(`总分`) AS `三科总分` FROM `学生成绩表`;
      

  2.   

    详情参见mysql的 sum函数, avg函数
    例如,
    # 计算所有学生的数学总分 
    SELECT sum(`数学`) AS `mathSum` FROM `成绩表`
    # 计算所有学生的总分和
    SELECT sum(`语文`) + sum(`数学`) + sum(`英语`) AS `总分` FROM `成绩表
    # 计算英语平均分
    SELECT avg(`英语`) FROM `成绩表`
      

  3.   

    每个人总分: select 语文+数学+英语 as num from stu;
    单科总分:  select sum(语文) as 语文总分 from stu;
    总分和: select sum(语文)+sum(数学)+sum(英语) as 总分和 from stu;
      

  4.   

    楼上正解,我只能提供手册帮助了:http://download.csdn.net/detail/dmtnewtons/4251049
    其中:12.4.2. 数学函数
      

  5.   

    我这样写对不对啊:$sqlsum="select sum(’yuwen‘) from cehngjidan where Uid='".$Uid."'";
    那么下面怎么写?是这样写吗:$total=$obj->exec($sqlsum);这样怎么输出?
      

  6.   

    select sum(`yuwen`) from cehngjidan where Uid='".$Uid."'";
    环绕yuwen两边的,是键盘tab键上面ESC键下面的那个斜点,不是引号什么的
    $total=$obj->exec($sqlsum); 这种写法只是返回update,delete语法操作后的更新函数,要用 $obj->query()来取得select语句的结果集
    http://cn.php.net/manual/en/pdo.query.php
      

  7.   

    你们说详细点啊,我不懂啊!select sum(`yuwen`) from cehngjidan where Uid='".$Uid."'";
    没有错,下面应该怎么写,怎么输出?我不知道啦!
      

  8.   

    你有 $obj->exec($sqlsum)
    显然这是在使用自定义的类,这个累的使用方法由开发者提供。我们不知道你的类值如何定义的,当然也就不知道下一步该如何做了
      

  9.   

    由于没看到你类是怎么些的。只能提供原装的程序:
    $sql="select sum(`yuwen`) as yuwen_sum from cehngjidan where Uid='".$Uid."'";
    $result=mysql_query($sql);
    $row=mysql_fetch_assoc($result); 
    echo $row['yuwen_sum'];
      

  10.   

    这个as yuwen_sum是什么意思?我这里没有这个怎么写进去?
      

  11.   

    $sql =<<< SQL
    create table `学生成绩表` (
      `学号` int,
      `姓名` varchar(10),
      `语文` int default 0,
      `数学` int default 0,
      `英语` int default 0,
      `总分` int default 0,
      PRIMARY KEY (`学号`)
    )
    SQL;
    //mysql_query($sql) or die(mysql_error());//执行一次后就注释掉$sql = <<< SQL
    insert into `学生成绩表` values 
    (1, '张三', 65, 75, 80, 0),
    (2, '李四', 60, 70, 80, 0),
    (3, '王麻子', 68, 72, 85, 0)
    SQL;
    //mysql_query($sql) or die(mysql_error());//执行一次后就注释掉//mysql_query('update `学生成绩表` set `总分`=`语文`+`数学`+`英语`');//执行一次后就注释掉$sql =<<< SQL
    select
     sum(`总分`) as `总分合计`, avg(`总分`) as `总平均分`,
     sum(`语文`) as `语文总分`, avg(`语文`) as `语文平均分`,
     sum(`数学`) as `数学合计`, avg(`数学`) as `数学平均分`,
     sum(`英语`) as `英语合计`, avg(`英语`) as `英语平均分`
     from `学生成绩表`
    SQL;
    $rs = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($rs);
    print_r($row);
    Array
    (
        [总分合计] => 655
        [总平均分] => 218.3333
        [语文总分] => 193
        [语文平均分] => 64.3333
        [数学合计] => 217
        [数学平均分] => 72.3333
        [英语合计] => 245
        [英语平均分] => 81.6667
    )
      

  12.   

    我的表就和你这个表一样:
    (1, '张三', 65, 75, 80, 0),
    (2, '李四', 60, 70, 80, 0),
    (3, '王麻子', 68, 72, 85, 0)
    只有一个就是 table 是 chengjidan 其余都一样。