在我运行的网站上,我让用户评价我们的网站。 我将数据保存在数据库中。有8个不同的答案。我怎样才能得到每个值的投票百分比。
我的表看起来像这样
ID -----表决
1点------- P1
2 ------- P1
3 ------- P2
4 ------- P3
5 ------- P4
6 ------- P3
...
答案 0 :(得分:3)
您可以使用:
select vote,
count(*) / (select count(*) from your_table) * 100 as percentage
from your_table
group by vote
答案 1 :(得分:0)
这是IMO的两倍,一个获取数据,另一个显示它但是这里:
SELECT vote, count(vote)
FROM votes
GROUP BY vote WITH ROLLUP
这将为您提供所有投票计数(不包括没有投票的答案,您必须推断它们或更改您的模型),并且具有NULL投票的最后一行将是您的所有投票总数。< / p>
所以你把它们放在内存中就像你应该做的那样,把它传递给你的显示方法(视图,模板,你使用的观察者),这个会:
echo $voteCount / $totalVotes * 100;
干杯
答案 2 :(得分:0)
所以你有一个表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);