Здравствуйте. Подскажите пожалуйста как сделать Топ по нескольким параметрам.
Есть база в которой содержится оценка. Надо сформировать топ не просто по максимальной, а еще учитывая сколько всего проголосовало (количество записей). PHP+MySQL
Еще можно поиграться коэффициентами для достижения желаемого результата, задав две равноценных средних оценок и количеств. Например, задать что средняя оценка 5 при 10 оценках равноценно баллу 4 при 20 оценках.
Надо:
Чтобы скажем оценка 4(среднее) и количество записей 50, было выше чем оценка 5 с 40 записей.
Что бы было еще понятнее для чего это:
Есть голосование за книгу, средний бал за книгу 4.3 пришел человек и поставил другой книге 5 (это первая оценка), что бы она не стала выше чем книга с 4.3 где проголосовало 20 человек.
Можно и вот так select b.name,((select (count(mark)/(sum(mark)/count(mark)))+count(mark) from mark m where m.id_mark=b.id_mark)) as mVal from book b order by mVal DESC;
то есть к получившему от деления результату прибавить количество голосов.
Это первый вариант.
И второй вариант select b.name,((select (count(mark)/(sum(mark)/count(mark))) from mark m where m.id_mark=b.id_mark)) as mVa,((select count(mark) from mark m where m.id_mark=b.id_mark)) as c from book b order by mVal,c DESC;
gaelpa, я прошу помощи в реализации наиболее корректного топа. Как и что я сам не знаю. Изложил только суть, что есть книги, голоса и количество голосов. Интересует как бы делали Вы или как это делать надо.