Структура таблицыMySQL дисплей вычисленное среднее для всех строк
rating.post_id
rating.user_id
rating.rate_like
rating.rate_dislike
Образец данных:
rating.post_id = 1
rating.user_id = 1
rating.rate_like = 1
rating.rate_dislike = 0
rating.post_id = 1
rating.user_id = 2
rating.rate_like = 1
rating.rate_dislike = 0
rating.post_id = 1
rating.user_id = 3
rating.rate_like = 0
rating.rate_dislike = 1
С учетом вышеизложенного структура, пост 1 оценивается пользователем 1, 2 и 3, в котором пользователи 1 и 2 проголосовали так, как будто пользователь 3 проголосовал за неприязнь.
С этим, как получить среднее значение, когда рейтинг равен 5 (5) звездам?
формула: (((total rate_like/total votes) * 100) * 0.5)/10 = Rate (round to nearest .5)
Пример: (((2/3) * 100) * 0.5)/10 = 3.33 (round to 3.5)
Rate будет 3.5 из 5 звёзд
Ожидаемый результат MySQL будет:
post_id = 1
rate_like = 2
rate_dislike = 1
total_rating = 3.5
Вот что я имею сделанный с sql, но я понятия не имею, как сделать это в одном заявлении sql только.
Это получает среднее:
select round(round((((sum(rate_like)/(sum(rate_like) + sum(rate_dislike)) * 100) * 0.5)/10) * 2)/2, 1) from rating group by post_id
, в котором должны слиться в этом заявлении:
SELECT post_id, sum(rate_like), sum(rate_dislike), (sum(rate_like) + sum(rate_dislike)) from rating group by post_id
Слияние двух заявлений дает ошибку subquery returns more than 1 row
:
SELECT post_id, sum(rate_like), sum(rate_dislike), (sum(rate_like) + sum(rate_dislike)), (select round(round((((sum(rate_like)/(sum(rate_like) + sum(rate_dislike)) * 100) * 0.5)/10) * 2)/2, 1) from rating group by post_id) from rating group by post_id
Добавление предложения where
в обоих операциях select
решает проблему, но это необходимо для отображения нескольких строк.
Я запутался, вы задаете вопрос, а затем предоставить формулу, отвечая на ваш вопрос. С чем вы пытаетесь получить помощь? Никто здесь не собирается писать код для вас. –
Просто нужно заявление sql. – basagabi
Что вы уже пробовали? Можете ли вы опубликовать инструкцию SQL, с которой вы работаете, что не удалось? –