Подсчёт рейтинга, вывод данных

Grapefruit Lips

Новичок
Подсчёт рейтинга, вывод данных

Вид голосования по фото: от 1 до 5 баллов
rating = сумма всех баллов (новые (от 1 до 5) прибавляются к сумме всех старых)
raing_count = количество проголосовавших

запрос / вывод топ рейтинговых фото:
$results = mysql_query ("SELECT id, rating, rating_count ,SUM(rating/rating_count) AS ra FROM data GROUP BY id ORDER BY ra DESC");

Как сделать вывод рейтинговых фото таким, что бы, например, новое фото с ОДНИМ голосом в 5 баллов не было на первой(первых) строчке..

Т.е. например, у фото рейтинг - 4.87 из 5 баллов, и колличество проголосовавших = 31 - это фото на 8-ой строчке, а у фото с рейтингом в 5 баллов, и с ОДНИМ проголосовавшим - строчка первая. Вот незадача =))) ... А я хочу сделать так, что бы было соотношение, т.е. если баллов меньше 5, но кол-во проголосовавших больше чем у фото с рейтингом в 5 баллов и с меньшим кол-вом проголосовавших, то первое фото (меньше 5 баллов, но кол-во проголосовавших больше) должно быть выше...

Я запутался с решением проблемы =(

или блин.. тогда может быть, например, фото плохое, у неё рейтинг = 1 , а проголосовало 500 человек.. и оно на первой строчке... или это можно решить...

help me out, please!
 

Steamroller

Новичок
Как-то стремно запрос у тебя выглядит, там же group by не нужен, это если бы ты таблицу с голосами хранил, то надо было бы группировать, а тут же уже результаты.

Насчет решения проблемы - снижай рейтинг в зависимости от количества голосов. Делается путем умножения на функцию, которая асимптотически приближается к единице при росте числа голосов, извините за выражение.

Типа select id, rating, rating_count, (rating/rating_count)*(1-1/rating_count) as ra from ...
Можно сильнее гасить рейтинг при малом числе голосов, возводя в степень эту функцию, в общем это уже подбирать надо, чтобы смотрелось нормально.
 

Grapefruit Lips

Новичок
Streamroller, спасибо! стало то, что впринцепи надо =)

а group by вроде нужен был, т.к. если убрать его, когда при этом была SUM(rating/rating_count) , то вообще ничего не выводится... а теперь, когда нет SUM и без group by выводит =)
 
Сверху