Есть несколько из них, но сегодня я либо замедлен, либо пытаюсь сделать что-то невозможное. У меня есть эта настройка
`id` int(11) NOT NULL AUTO_INCREMENT,
`score` float NOT NULL,
`userId` int(11) NOT NULL
`movieId` int(11) NOT NULL
Принимая это во внимание, я хочу получить процент от всех впечатлений от всех пользователей в данном фильме, как я смогу это сделать, поскольку пользователи могут оценивать их как "хорошие" с любым значением выше 0 и как "плохо" с любым значением ниже 0? Скажем, у данного фильма есть 4 опыта, где 3 - "2", а 1 - "-2". Я хотел бы вернуть "porcentage" из "подобия" этого фильма.
Я сошел с ума?
Использование:
SELECT x.movieid,
x.score,
COUNT(x.userid) / y.score_count AS percentage
FROM YOUR_TABLE x
JOIN (SELECT t.movieid,
COUNT(t.score) AS score_count
FROM YOUR_TABLE t
GROUP BY t.movieid) y ON y.movieid = x.movieid
GROUP BY x.movieid, x.score
Это поможет вам начать работу. Я использовал TSQL с SQL Server, но если синтаксис не тот же (кажется, что CAST
должен быть таким же в MySQL), просто дайте ему настройки, и вы пойдете в MySQL.
SELECT Score,
(NumWithScore/(SELECT CAST(COUNT(userid) as decimal(10,2)) From Movies where MovieID= 7 ) * 100
)AS PercentageVotes
FROM
(
SELECT Score,
COUNT(*) AS NumWithScore
FROM Movies AS M
WHERE MovieID = 7
GROUP BY Score
) AS S
Данные, которые я использовал, были:
2
-2
Результаты в:
Score | PercentageVotes
------+----------------
2.00 | 66.6666666
-2.0 | 33.3333333