MySQL Rating System - Найти рейтинг - PullRequest
1 голос
/ 23 июня 2010

Я пытаюсь оценить Types of Fruit по наилучшему возможному рейтингу, указанному пользователями.

У меня есть таблица Fruit под названием Ratings только для отправки оценок со следующей информацией.* теперь я пытаюсь запустить команду SQL, подобную следующей

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

Это работает, однако, если я получаю 1 пользователя, который оценивает фрукт как яблоко 5, а затем 1000 пользователей, которые оценивают апельсин a4 яблоко внезапно становится лучше.

Как я могу принять во внимание количество голосов, чтобы гарантировать, что большинство проголосовавших вместе с лучшими будут первыми.

Ответы [ 2 ]

2 голосов
/ 23 июня 2010

Этот вопрос больше касается настройки вашей математической формулы, чем чего-либо еще.

Звучит так, будто вы спрашиваете о популярности, а не о рейтинге.Простой способ сделать это - умножить средний рейтинг на количество голосов.Как насчет этого (извините, если мой синтаксис отключен, в данный момент я удален от сервера SQL):

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

Имейте в виду, чтоФормула будет оценивать 1000 голосов из 1 намного выше, чем 1 голос из 5.

0 голосов
/ 23 июня 2010

Почему бы просто не выбрать количество голосов и показать их пользователю.Так что да, 1 голос из 5 за яблоко был бы общим 5 НО только с 1 голосом.Это дало бы пользователям простой способ увидеть, насколько «популярен» данный рейтинг.

Так работает большинство пятизвездочных рейтинговых систем в сети сегодня, если я не ошибаюсь.

Удачи!

Ник

...