2011-05-02 4 views
0

사용자의 각 이벤트에 대한 등급을 저장하는 MYSQL 테이블이 event_rating이라는 이벤트 테이블에 1-10 있습니다. 내가 뭘 찾으려고 노력하고있어이 같은 득표 수와 등급에 따라 가장 정확한 평가입니다 : 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 사이 여야한다는 것을, 총 등급을 계산하는 정확한 방법입니다.

--- 자세한 내용

---

나는 하나의 테이블 사용자 다른 이벤트를 가지고, 사용자는 새로운 이벤트를 추가하고 해당 이벤트 평가 할 수 있습니다. 이벤트 표에는 eventID, userid, event_rating 열이 있습니다. 따라서 각 이벤트는 사용자가 작성한 이벤트에 대한 등급을 보유 할 수 있습니다. 내가 원하는 것은 모든 이벤트 등급을 계산하여 해당 사용자의 최대 (전체) 등급을 얻는 것입니다. 사용자가 몇 번이나 이벤트를 작성했는지에 상관없이 총 시청률이 1-10 명을 초과하지 않고 10 명을 초과하지 않도록하고 싶습니다. 그게 가능하니? 해결책이나 아이디어가 없다면? 읽기 :

답변

2

쿼리의 바보 조각은 무엇인가에 대한

감사합니다 ??

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

이 그냥 AVG(d.event_rating)

은 당신이 정말로 무엇을 원하는가 가져

당신이

b를 항상있는 것도

(a*b)/a 없다?

+0

내 정보가 더 많은 정보와 결과로 업데이트되었습니다. – Zubair1

+0

수학적으로 문제는 여전히 동일합니다. 'COUNT (d.event_rating) * AVG (d.event_rating)/COUNT (d.event_rating) as totalRating'은'AVR (d.event_rating) as totalRating'과 동일합니다. * b)/a'는'b'입니다. –

+0

내 솔루션이 무엇이 될지 모르겠습니다. 더 명확하게하기 위해, 내가 성취하려고 노력하는 것에 관해서는 더 자세한 내용으로 나의 질문을 업데이트했다. – Zubair1