2011-05-02 72 views
0

我有一個MYSQL表,它存儲了一個用戶的每個事件的評級,1-10在事件表中稱爲event_rating。我試圖尋找是基於選票的數量和等級這樣的最高準確的評價:MYSQL評級算法

SELECT 
c.userid, 
c.user_name, 
COUNT(d.event_rating) AS votesCount, 
AVG(d.event_rating) AS votesAvg, 
SUM(d.event_rating) AS tsum, 
COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating 
FROM events d JOIN users c ON d.userid = c.userid WHERE (d.userid = '2') GROUP BY d.userid ORDER BY totalRating DESC 

我添加了用戶在兩個虛擬的收視率,一個評級的10,另一個5。

結果如下:

userid  user_name  votesCount  votesAvg tsum  totalRating 
    2 Rahul Khanna   2   7.5000  15  7.50000000 

是不是準確,我是計算是正確的?

---編輯---

發佈一些更多的結果

使用COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating

userid user_name votesCount votesAvg tsum totalRating 
2  Rahul Khanna  2  7.5000  15  7.50000000 
1  Rita Agnihotri 9  4.8889  44  4.88888889 
3  Daniel Springs 4  3.5000  14  3.50000000 
4  Roger Myers  6  3.5000  21  3.50000000 
5  Chun Tanakat  3  3.0000  9  3.00000000 

使用COUNT(d.event_rating)*AVG(d.event_rating) as totalRating

userid user_name votesCount votesAvg tsum totalRating 
1  Rita Agnihotri 9  4.8889  44  44.0000 
4  Roger Myers  6  3.5000  21  21.0000 
2  Rahul Khanna  2  7.5000  15  15.0000 
3  Daniel Springs 4  3.5000  14  14.0000 
5  Chun Tanakat  3  3.0000  9  9.0000 

---更多---

我應該使用下面的呢?

COUNT(d.event_rating)*AVG(d.event_rating)/10 as totalRating 

我需要做的是計算總評分的準確的方式,把votesCount考慮以及和評級必須是1-10之間。

---更詳細---

我有一個表用戶的另一個活動,用戶能夠添加新的事件和速率的事件。 Events表中有一個eventID,userid,event_rating列。因此,每個事件都可以爲用戶創建的事件進行評級。我想要的是計算所有的事件評級,以獲得該用戶的最大(總)評級。無論用戶創建了多少個事件,我都希望總評分在1-10之間,不超過10。那可能嗎?如果沒有任何解決方案或想法?

感謝您的閱讀:)

回答

2

這是什麼愚蠢的一塊查詢?

COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating 

這是什麼

(a*b)/a這始終是b

你只取AVG(d.event_rating)

你想要什麼真正??

+0

用更多的信息和結果更新了我的問題。 – Zubair1 2011-05-02 09:05:14

+0

在數學上,問題仍然是一樣的:因爲totalRating' COUNT(d.event_rating)* AVG(d.event_rating)/ COUNT(d.event_rating)等於'AVG(d.event_rating)作爲totalRating',因爲'(a * b)/ a'是'b'。 – 2011-05-02 09:15:03

+0

我不確定我的解決方案是什麼。雖然要更清楚一點,至於我想要完成的事情,我更詳細地更新了我的問題。 – Zubair1 2011-05-02 09:56:32