【问题标题】:SQL / PHP calculate percent of VotesSQL / PHP 计算投票百分比
【发布时间】:2012-10-11 23:34:09
【问题描述】:

在我运行的网站上,我让用户评价我们的网站。 我确实将数据保存在数据库中。有8个不同的答案。我如何获得每个值的投票百分比。

我的桌子是这样的

id-----投票
1--------p1

2-------p1

3-------p2​​

4-------p3

5-------p4

6-------p3

...

【问题讨论】:

  • 您使用的是什么 DBMS? mysql?微软 SQL?甲骨文?
  • 能否提供更清晰的数据? p1是一个特征,有多少票?特征存储在哪里?用户 ID?投票数?...
  • 不知道更多细节:(100 / total_vote_count * vote_type)

标签: php sql calc


【解决方案1】:

你可以用这个:

select vote, 
       count(*) / (select count(*) from your_table) * 100 as percentage
from your_table
group by vote

【讨论】:

  • 在那种情况下,你真的应该解释一下你的数据结构。不清楚。
【解决方案2】:

所以您有一个表polls,其中voteid 字段表示针对该一票发布的偏好。

我认为你最好的选择是简单地运行

SELECT voteid, count(voteid) AS votes FROM polls GROUP BY voteid;

然后在PHP中恢复数据:

$votes = array();
$total = 0;
while($vote = mysql_fetch_array($exec)) // or PDO, or ...
{
    list($voteid, $num) = $vote;
    $votes[$voteid] = $num;
    $total += $num;
}
// Convert absolute number to percentages
$percents = array();
foreach($votes as $vote => $count)
    $percents[$vote] = number_format(($count*100.0)/$total, 2);

【讨论】:

    【解决方案3】:

    IMO 有两种方式,一种获取数据,另一种显示数据,但这里是:

    SELECT vote, count(vote)
    FROM votes
    GROUP BY vote WITH ROLLUP
    

    这会给你所有的投票数(不包括没有投票的答案,你必须推断它们或改变你的模型),最后一行有 NULL 投票将是你的总票数。

    因此,您应该像往常一样将它们放在内存中,将其传递给您的显示方法(视图、模板、无论您使用什么),然后这个会:

    echo $voteCount / $totalVotes * 100;
    

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      相关资源
      最近更新 更多