2010-06-23 4 views
1

사용자가 제공 한 최고 등급의 등급으로 과일의 등급을 매기려고합니다.MySQL의 등급 시스템 - 평가 등급

나는, 지금 내가이 그러나 작동 다음

select From_ID, AVG(Rating) AS Rating FROM Ratings Group BY `Fruit_ID` ORDER by Rating DESC 

같은 SQL 명령을 실행하기 위해 노력하고있어 다음과 같은 정보

Fruit_id int 
From_ID int 
Rating int 

와 평가를 제출하기위한 평가라는 과일 테이블이 내가 과일을 사과 한 사람이 5 명, 그리고 오렌지가 사과를 평가하는 1000 명의 사용자를 얻는다면, 사과는 갑자기 더 잘 고려됩니다.

가장 많은 투표자가 가장 먼저 투표하도록하려면 어떻게 투표 수를 고려해야합니까?

답변

0

득표 수를 선택하여 사용자에게 표시하는 것이 어떨까요? 그렇습니다. 사과에 대한 5 표의 1 표는 단 1 표만으로 전체적으로 5 점이됩니다. 이를 통해 사용자는 주어진 등급이 얼마나 "대중적"인지를 쉽게 알 수 있습니다.

이것은 내가 실수하지 않는다면 오늘날 대부분의 fivestar 등급 시스템이 인터넷에서 작동하는 방식입니다.

행운을 빈다.

+0

여기의 문제는 데이터를 표시하지 않는 것이고, 하나 이상의 투표로 Top 과일을 순위 매기기 위해 노력하고 있습니다. – pws5068

2

이 질문은 수학 공식을 다른 것보다 조정하는 것에 관한 것입니다.

당신이 요구하는 것처럼 들리는 것은 평판 이라기보다는 인기입니다. 이를 수행하는 간단한 방법은 평균 평점에 투표 수를 곱하는 것일 수 있습니다. 이것에 대해 어떻게 (내 구문이 꺼져 있으면 나는 순간에 떨어져 SQL 서버에서 해요, 실례하시기 바랍니다) :

select From_ID, AVG(Rating) * COUNT(Rating) AS Rating FROM Ratings Group BYORDER by Rating DESC

이 공식은 1 천 표를 많이 평가할 것이라는 점을 명심 Fruit_ID 1 득표 5보다 많습니다.

+0

당신은 그냥 사용할 수 있습니다 ... SELECT From_ID 등급 DESC로 과일 IDORDER BY 등급 그룹에서 평가 AS, SUM (평가) ... 평균으로 * COUNT = SUM. –