0

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

我的桌子看起来像这样

id-----vote
1--------p1

2--------p1

3--------p2

4--------p3

5--------p4

6--------p3

...

4

3 回答 3

3

你可以使用这个:

select vote, 
       count(*) / (select count(*) from your_table) * 100 as percentage
from your_table
group by vote
于 2012-10-11T15:27:04.053 回答
1

因此,您有一个表格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);
于 2012-10-11T15:34:09.007 回答
0

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

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

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

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

echo $voteCount / $totalVotes * 100;

干杯

于 2012-10-11T15:29:25.517 回答