Php SELECT中的AVG函数会影响查询输出中的行数

Php SELECT中的AVG函数会影响查询输出中的行数,php,mysql,database,Php,Mysql,Database,以下是我的疑问: $query = " SELECT * FROM Teacher t INNER JOIN Session s ON t.TeacherId = s.TeacherId JOIN Grade_Report gr ON s.SessionId = gr.SessionId WHERE ('".mysql_real_escape_string($sessionid)."' = '' OR gr.Se

以下是我的疑问:

    $query = "
      SELECT *
      FROM Teacher t
      INNER JOIN Session s ON t.TeacherId = s.TeacherId
      JOIN Grade_Report gr ON s.SessionId = gr.SessionId
      WHERE
        ('".mysql_real_escape_string($sessionid)."' = '' OR gr.SessionId = '".mysql_real_escape_string($sessionid)."') ";
结果存储在一个表中,该表的代码如下所示:

<table border='1'>
      <tr>
      <th>Session ID</th>
      <th>Student Username</th>
      <th>Student Name</th>
      <th>Mark</th>
      <th>Grade</th>
      </tr>
      <?php
        while ($row = mysql_fetch_array($result)) {
          echo "
      <tr>
      <td>{$row['SessionId']}</td>
      <td>{$row['StudentUsername']}</td>
      <td>{$row['StudentForename']} {$row['StudentSurname']}</td>
      <td>{$row['Mark']}</td>
      <td>{$row['Grade']}</td>
      </tr>";
        }

会话ID
学生用户名
学名
做记号
等级

AVG返回一行的原因是它是一个聚合函数,没有GROUPBY子句,它对所有行都进行操作

PHP中的平均值与其他地方的平均值一样;将值相加,然后除以样本数。因此,通过将代码更改为:

      <?php
        $total = 0;
        $count = 0;
        while ($row = mysql_fetch_array($result)) {
          $count++;
          $total += $row['Mark'];
          echo "
      <tr>
      <td>{$row['SessionId']}</td>
      <td>{$row['StudentUsername']}</td>
      <td>{$row['StudentForename']} {$row['StudentSurname']}</td>
      <td>{$row['Mark']}</td>
      <td>{$row['Grade']}</td>
      </tr>";
        }
$average = (int)($total/$count);
echo "<tr><td colspan=3></td><td>Average</td><td>$average</td></tr>".

AVG返回一行的原因是它是一个聚合函数,没有GROUP BY子句对所有行进行操作

PHP中的平均值与其他地方的平均值一样;将值相加,然后除以样本数。因此,通过将代码更改为:

      <?php
        $total = 0;
        $count = 0;
        while ($row = mysql_fetch_array($result)) {
          $count++;
          $total += $row['Mark'];
          echo "
      <tr>
      <td>{$row['SessionId']}</td>
      <td>{$row['StudentUsername']}</td>
      <td>{$row['StudentForename']} {$row['StudentSurname']}</td>
      <td>{$row['Mark']}</td>
      <td>{$row['Grade']}</td>
      </tr>";
        }
$average = (int)($total/$count);
echo "<tr><td colspan=3></td><td>Average</td><td>$average</td></tr>".

您希望得到什么样的结果?如果您根本没有
GROUP BY
子句,每个标记的
平均值是什么意思?我的意思是我不想使用SELECT子句来选择每个会话(测试)的平均标记。我是否可以使用php创建一个函数,通过检索$row['mark'],并使用php的AVG查找平均值并将其存储在表下而不是表中,来计算每个标记的平均值?我不知道如何使用语法来实现这一点。你希望得到什么结果?如果您根本没有
GROUP BY
子句,每个标记的
平均值是什么意思?我的意思是我不想使用SELECT子句来选择每个会话(测试)的平均标记。我是否可以使用php创建一个函数,通过检索$row['mark'],并使用php的AVG查找平均值并将其存储在表下而不是表中,来计算每个标记的平均值?我不知道如何使用语法来实现这一点。它奏效了谢谢,我现在知道如何使用php进行总计、计数和平均,谢谢:)它奏效了谢谢,我现在知道如何使用php进行总计、计数和平均,谢谢:)