2012-10-11 207 views
0

在網站上我運行,我讓用戶評價我們的網站。 我將數據保存在數據庫中。有8個不同的答案。我怎樣才能得到每個價值的投票的百分比。SQL/PHP計算投票的百分比

我的表看起來像這樣

ID -----投票
1 ------- P1

2 ------- P1

3- ------ P2

4 ------- P3

5 ------- P4

點6 ------- P3

...

+0

您正在使用什麼數據庫管理系統? MySQL的? MS SQL?甲骨文? –

+0

你能給出更清楚的數據嗎? p1是一個功能,多少票?哪裏存儲的功能?用戶ID?投票數... –

+0

不知道任何更多的細節:。(100/total_vote_count * vote_type) – nickhar

回答

2

您可以使用此:

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

謝謝你,但任何地方100%:( – mal200

+0

在這種情況下,你真的應該解釋一下你的數據結構目前尚不清楚 –

0

這兩個摺疊方式IMO,人們得到的數據,其他的說明,但這裏有雲:

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

這會給你所有的投票數(不包括沒有投票的答案,你必須來推斷他們或更改模型),並具有空的投票將是最後的行全部選票一次。

所以你把那些在內存中,你應該總是這樣,這個消息傳給你的顯示方法(視圖,模板,wathever使用),這一次將:

echo $voteCount/$totalVotes * 100; 

乾杯

+0

什麼DBMS是這樣的嗎? –

+0

這是針對MySQL的 –

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);