[英]How do i get result of a statement after EXECUTE statement in mySQL?
[英]How do I Get the cummulative total of equation in MySql statement
我有以下MySql语句,我无法获得while循环中“排名”的累积总计
SELECT *,
q1 + ((q1 + q2 + q3 + q4 + q5 + q6) / 6)
AS ranking
/ SUM(ranking)
FROM table
WHERE field = :field
GROUP by id
我的查询的这一部分工作完美:
q1 + ((q1 + q2 + q3 + q4 + q5 + q6) / 6)
AS ranking
我需要将“ AS排名”值除以查询输出中每个“排名”行的总和,并在while循环的$ rankingPercentage变量中将其返回。
q1
q2
q3
q4
q5
q6
是一个表中的所有字段,并且包含0到100之间的数字值(VARCHAR)。
我期望返回$ rankingPercentage的输出,该输出为“排名”(我的方程式为“ AS排名”上方)除以SQL查询中返回的所有“排名”行的总和。
我的While循环如下:
while($row = $sqlprep->fetch(PDO::FETCH_OBJ)){
$ranking = $row->ranking;
echo '<tr valign="bottom"><td>' . $row->id . '</td>';
echo '<td>' . $row->uid . '</td>';
echo '<td>' . $row->q1 . '</td>';
echo '<td>' . $row->q2 . '</td>';
echo '<td>' . $row->q3 . '</td>';
echo '<td>' . $row->q4 . '</td>';
echo '<td>' . $row->q5 . '</td>';
echo '<td>' . $row->q6 . '</td>';
echo '<td>' . $row->q9 . '</td>';
echo '<td class="capitalise">' . $ranking. '</td>';
echo '<td class="capitalise">' . $rankingPercentage . '</td>';
echo '</tr>';
}
据我了解,您有一个公式来为每行分配一个分数,然后您需要查看该行在所有行中所赚取的总分数的一部分。
子选择将解决此问题,尽管联接可能会更有效。
SELECT
*,
<formula> AS ranking
<formula> / (
SELECT SUM(<formula>)
FROM table
WHERE field = :field
) AS rankingPercentage
FROM table
WHERE field = :field
GROUP BY id
这将告诉您每一行所占整体的哪一部分,而不会告诉您给定的行在前X%中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.