周围有一些,但我今晚要么慢,要么我想做一些不可能的事情。我有这个设置
`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”我想要回复那部电影“相似”的“百分比”。
我疯了吗?
答案 0 :(得分:1)
这应该有助于您入门。我已经在SQL Server中使用过TSQL,但是如果语法不一样(在MySQL中看起来CAST
应该是相同的),那么只需在此处进行调整即可让您进入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
答案 1 :(得分:0)
使用:
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