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进行总计、计数和平均,谢谢:)