繁体   English   中英

如何获取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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM