在網站上我運行,我讓用戶評價我們的網站。 我將數據保存在數據庫中。有8個不同的答案。我怎樣才能得到每個價值的投票的百分比。SQL/PHP計算投票的百分比
我的表看起來像這樣
ID -----投票
1 ------- P1
2 ------- P1
3- ------ P2
4 ------- P3
5 ------- P4
點6 ------- P3
...
在網站上我運行,我讓用戶評價我們的網站。 我將數據保存在數據庫中。有8個不同的答案。我怎樣才能得到每個價值的投票的百分比。SQL/PHP計算投票的百分比
我的表看起來像這樣
ID -----投票
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
謝謝你,但任何地方100%:( – mal200
在這種情況下,你真的應該解釋一下你的數據結構目前尚不清楚 –
這兩個摺疊方式IMO,人們得到的數據,其他的說明,但這裏有雲:
SELECT vote, count(vote)
FROM votes
GROUP BY vote WITH ROLLUP
這會給你所有的投票數(不包括沒有投票的答案,你必須來推斷他們或更改模型),並具有空的投票將是最後的行全部選票一次。
所以你把那些在內存中,你應該總是這樣,這個消息傳給你的顯示方法(視圖,模板,wathever使用),這一次將:
echo $voteCount/$totalVotes * 100;
乾杯
什麼DBMS是這樣的嗎? –
這是針對MySQL的 –
所以你有一張表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);
您正在使用什麼數據庫管理系統? MySQL的? MS SQL?甲骨文? –
你能給出更清楚的數據嗎? p1是一個功能,多少票?哪裏存儲的功能?用戶ID?投票數... –
不知道任何更多的細節:。(100/total_vote_count * vote_type) – nickhar