У меня есть таблица MYSQL, которая хранит рейтинг для каждого события пользователя, 1-10 в таблице событий, называемой event_rating. Что я пытаюсь найти самый высокий точный рейтинг на основе количества голосов и рейтинга, как это:Алгоритм оценки MYSQL
SELECT
c.userid,
c.user_name,
COUNT(d.event_rating) AS votesCount,
AVG(d.event_rating) AS votesAvg,
SUM(d.event_rating) AS tsum,
COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating
FROM events d JOIN users c ON d.userid = c.userid WHERE (d.userid = '2') GROUP BY d.userid ORDER BY totalRating DESC
Я добавил два фиктивных оценок для пользователя, один с рейтингом 10, а другой с 5.
результаты приведены ниже:
userid user_name votesCount votesAvg tsum totalRating
2 Rahul Khanna 2 7.5000 15 7.50000000
это точно, и я я его расчета правильно?
--- EDIT ---
постить больше результатов
ИСПОЛЬЗОВАНИЕCOUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating
userid user_name votesCount votesAvg tsum totalRating
2 Rahul Khanna 2 7.5000 15 7.50000000
1 Rita Agnihotri 9 4.8889 44 4.88888889
3 Daniel Springs 4 3.5000 14 3.50000000
4 Roger Myers 6 3.5000 21 3.50000000
5 Chun Tanakat 3 3.0000 9 3.00000000
ИСПОЛЬЗОВАНИЕCOUNT(d.event_rating)*AVG(d.event_rating) as totalRating
userid user_name votesCount votesAvg tsum totalRating
1 Rita Agnihotri 9 4.8889 44 44.0000
4 Roger Myers 6 3.5000 21 21.0000
2 Rahul Khanna 2 7.5000 15 15.0000
3 Daniel Springs 4 3.5000 14 14.0000
5 Chun Tanakat 3 3.0000 9 9.0000
--- MORE ---
Должен ли я использовать ниже вместо этого?
COUNT(d.event_rating)*AVG(d.event_rating)/10 as totalRating
Что мне нужно, это точный способ расчета общего рейтинга, поставив votesCount во внимание также и о том, что рейтинг должен быть между 1-10.
--- более подробно ---
У меня есть одна таблица пользователей еще События, пользователь имеет возможность добавлять новые события и оценить эти события. В таблице Events есть столбец eventID, userid, event_rating. Таким образом, каждое событие может содержать рейтинг для события, которое создал пользователь. Я хочу рассчитать весь рейтинг событий, чтобы получить максимальный (общий) рейтинг для этого пользователя. Я хочу, чтобы общий рейтинг меня составлял от 1 до 10 и не превышал более 10 независимо от того, сколько событий пользователь создал. Это возможно? если не какие-либо решения или идеи?
Спасибо за чтение :)
Обновлен мой вопрос с дополнительной информацией и результатами. – Zubair1
Математически проблема остается прежней: 'COUNT (d.event_rating) * AVG (d.event_rating)/COUNT (d.event_rating) как totalRating' равно' AVG (d.event_rating) как totalRating', потому что '(a * b)/a' является 'b'. –
Я не уверен, каким будет мое решение. Хотя, чтобы быть более ясными, что касается того, что я пытаюсь выполнить, я обновил свой вопрос более подробно. – Zubair1