|
|
|
|
$votes = $DB->query("SELECT *, SUM(vote) as votes,COUNT(vote) as counts, SUM(vote)/COUNT(vote) as result FROM " . TABLE_PREFIX . "votes GROUP BY imageid ORDER BY result DESC, counts DESC LIMIT 0,100");
|
Запрос - думаю тут все понятно.
Вопрос - верно ли он составлен и чисто логический вопрос
За фото голосуют три человека, двое ставят 5ть, один ставит 3, за другое фото голосует один и ставит пять - у какого фото рейтинг выходит выше должен быть ? | |
|
|
|
|
|
|
|
для: Richard Ferlow
(22.06.2007 в 17:38)
| | ($sum_golos/$count_golos)*(1-1/$count_golos) | |
|
|
|
|
|
|
|
для: Prihod
(22.06.2007 в 17:51)
| | Так, это че такое получится ?
(1-1/$count_golos) - вот это как понять ? | |
|
|
|
|
|
|
|
для: Richard Ferlow
(22.06.2007 в 17:38)
| | Вы что? Конечно там, где один человек ставит "5" - 100%.
А там где хоть один человек не ставит "5" будет ВСЕГДА меньше 100%, т.е. меньше пяти. | |
|
|
|
|
|
|
|
для: Unkind
(22.06.2007 в 18:12)
| | Да бывает, замкнет, и не такое высчитывать начинаешь :) | |
|
|
|
|
|
|
|
для: Richard Ferlow
(22.06.2007 в 17:38)
| | Вы можете отсекать статистически несостоятельные рейтинги.
HAVING counts > 7;
И не пишите звездочку, пишите SELECT image id, SUM(..... | |
|
|
|
|
|
|
|
для: Trianon
(22.06.2007 в 18:19)
| | Вот действительно хорошая мысль | |
|
|
|
|
|
|
|
для: Trianon
(22.06.2007 в 18:19)
| | Я, когда сталкивался с аналогичной проблемой подобрал коэфициенты так:
<Средний балл>*(<кол-во голосов>^1/2)/(<кол-во голосов>^1/2+1)
Так, если один голос, то застчитывается половина баллов, и т. п. я прикинул, так где-то должно быть нормально. Степень 1/2 может варьироваться в зависимости от "значимости" голоса.
А если не учитывать меньше семи голосов, то те которые получили шесть пятёрок окажутся ниже тех, у которых много двоек, что неправильно. | |
|
|
|
|
|
|
|
для: Osipov
(25.06.2007 в 15:28)
| | они не окажутся ниже.
Они окажутся не представлены в рейтинге.
Следующий же голос вернет их в рейтинг на нужную позицию. | |
|
|
|
|
|
|
|
для: Trianon
(25.06.2007 в 15:30)
| | >Так, это че такое получится ?
>(1-1/$count_golos) - вот это как понять ?
это называется асимптотическое приближаение к единице, которое позволяет снизить рейтинг в зависимости от количества голосов, но тут есть один недостаток , если проголосовал один человек то (1-1/$count_golos) будет равно 0 | |
|
|
|
|
|
|
|
для: Prihod
(25.06.2007 в 17:29)
| | Это не мой ответ. | |
|
|
|
|
|
|
|
для: Osipov
(25.06.2007 в 15:28)
| | <Средний балл>*(<кол-во голосов>^1/2)/(<кол-во голосов>^1/2+1)
Ммм, я в такой математике не силен :)
По этому значению сортировку делать ? | |
|
|
|