2013-11-26 18 views
-2

我在我的身邊有一個5星級評級系統前10位,我想查看前3名最受好評的,我現在用的是下面的SQL查詢:認爲從我的明星排名

SELECT Ranking, Total_value FROM <Table> ORDER BY Rating DESC LIMIT 3; 

,但不要」 t顯示前3位,顯示3位數最高,如果有10人投了1票,20人投了另一票,20票的人數最多,但沒有必要得到最高評分,那麼我如何將總票數與總排名分開?所以它顯示3最好的排名

希望有人能幫助我?和明白我的問題:)

+1

你知道有多少人投了票嗎?如果不是,你將完全無法做出平均水平。通過將所有數字相加在一起,然後將其除以所使用的數字量即可找到平均值。 – h2ooooooo

+0

排名和評分意味着什麼?我想這個評級是一票,但是不應該用你試圖找到的這個查詢來計算排名嗎? –

+0

請發佈您的表格定義和每個表格的樣本數據 – Shai

回答

0

您可以將Total_valueTotal_votes

SELECT 
    Ranking, 
    Total_votes, 
    Total_value, 
    (Total_value/Total_votes) as `Average` 
FROM 
    Votes 
ORDER BY 
    (Total_value/Total_votes) DESC 
LIMIT 10 
+0

謝謝。看起來像它的工作;) – user3035776

+0

但我有一個更quastion,當我使用下面的代碼,它會像這樣在屏幕上出現:name:(the bedst rated)name:(the second bedst rated)name:(the third bedst額定)等。但如果我想它是數字而不是名稱,就像這樣:1.(the bedst rated)2.(second bedst rated)等等...... – user3035776

+0

<?php $ server =「」; \t $ brugernavn =「」; \t $ kode =「」; \t $ db =「」; \t \t mysql_connect($ server,$ brugernavn,$ kode)或die(mysql_error()); \t \t mysql_select_db($ db)或die(mysql_error()); \t \t $數據=請求mysql_query( 「選擇 ID, Total_votes, Total_value, (Total_value/Total_votes)作爲'Average' FROM 評分 ORDER BY (total_value/total_votes)DESC LIMIT 3」)或死亡(mysql_error()); \t \t而($信息= mysql_fetch_array($數據)) \t { \t \t回聲 「名稱:」。 $ info ['id']。「
」; \t \t \t} \t > – user3035776

0

你必須創建一個名爲average.And在數據庫中的列更新平均每次人rates.Then使用查詢
SELECT排名,總價值FROM ORDER BY average_value DESC LIMIT 3;