在我运行的网站上,我让用户评价我们的网站。我确实将数据保存在数据库中。有8个不同的答案。我怎样才能得到每个值的投票百分比。
我的桌子看起来像这样
id-----vote
1--------p1
2--------p1
3--------p2
4--------p3
5--------p4
6--------p3
...
你可以使用这个:
select vote,
count(*) / (select count(*) from your_table) * 100 as percentage
from your_table
group by vote
因此,您有一个表格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);
这是 IMO 的两种方式,一种获取数据,另一种显示数据,但这里是:
SELECT vote, count(vote)
FROM votes
GROUP BY vote WITH ROLLUP
这会给你所有的投票计数(不包括没有投票的答案,你必须推断它们或改变你的模型),最后一行有 NULL 投票将是你的总票数。
因此,您应该像往常一样将它们放在内存中,将其传递给您的显示方法(视图,模板,无论您使用什么),这个将:
echo $voteCount / $totalVotes * 100;
干杯