Система рейтинга MySQL – Найти рейтинг

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

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

Fruit_id int From_ID int Rating int 

теперь я пытаюсь запустить команду SQL, как показано ниже.

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

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

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

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

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

Удачи!

Ник

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

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

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

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