Топ по нескольким параметрам. PHP+MySQL

Здравствуйте. Подскажите пожалуйста как сделать Топ по нескольким параметрам.
Есть база в которой содержится оценка. Надо сформировать топ не просто по максимальной, а еще учитывая сколько всего проголосовало (количество записей). PHP+MySQL
  • Вопрос задан
  • 3235 просмотров
Пригласить эксперта
Ответы на вопрос 7
ENargit
@ENargit
Посмотрите на вариант, который используется Яндексом для магазинов.

В Вашем случае, можно Rq взять равным, например, 1.
Ответ написан
@Bruteo
Посчитать среднее?

SELECT sum(rating/COUNT(*)) as avg FROM table GROUP BY element_id ORDER BY avg DESC LIMIT 10
Ответ написан
Duti_Fruti
@Duti_Fruti Автор вопроса
Либо я не совсем вас понял, либо вы меня.

Надо:
Чтобы скажем оценка 4(среднее) и количество записей 50, было выше чем оценка 5 с 40 записей.

Что бы было еще понятнее для чего это:
Есть голосование за книгу, средний бал за книгу 4.3 пришел человек и поставил другой книге 5 (это первая оценка), что бы она не стала выше чем книга с 4.3 где проголосовало 20 человек.
Ответ написан
@nuclear
ORDER BY param1,param2?
Ответ написан
Комментировать
Dzuba
@Dzuba
Сортировать можно по нескольким полям:
SELECT * FROM votes
GROUP BY item_id
ORDER BY COUNT(*) DESC, AVG(vote_value) DESC
LIMIT 10;

Если Вас и это не устроит, то, пожалуйста, сформулируйте суть соотношения между рейтингом и количеством голосов.
Ответ написан
Комментировать
Вот смотрите есть 3 книги 1-ая 20 голосов 4.3 средняя, 2-ая 4 голоса 4.8 средняя, и 3-ая 30 голосов средняя 4.2
делаем расчет

Кол.гол/ср. оценка

1. 20/4.3=4.6
2. 4/4.8=0.8
3. 30/4.2=7.14

сортируем
1. место 3 книга
2. место 1 книга
3. место 2 книга
Пример:

table «book»
id| name | id_mark|

table «mark»
id_mark| mark

select b.name,((select (count(mark)/(sum(mark)/count(mark))) from mark m where m.id_mark=b.id_mark)) as mVal from book b order by mVal DESC;

sql может быть все зависит от архитектуры БД
Ответ написан
Duti_Fruti
@Duti_Fruti Автор вопроса
gaelpa, я прошу помощи в реализации наиболее корректного топа. Как и что я сам не знаю. Изложил только суть, что есть книги, голоса и количество голосов. Интересует как бы делали Вы или как это делать надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы