有几个这样的人,但我今晚要么很慢,要么我正在尝试做一些不可能的事情。我有这样的设置
`id` int(11) NOT NULL AUTO_INCREMENT,
`score` float NOT NULL,
`userId` int(11) NOT NULL
`movieId` int(11) NOT NULL
考虑到这一点,我想要从给定电影中所有用户的所有体验中获得百分比,既然用户可以将它们评为“好的”,任何值大于0的“坏”,那么我如何能够做到这一点?假设一部给定的电影有4次体验,其中3次是"2“,1次是"-2”,我想返回该电影的“相似度”的“百分比”。
我疯了吗?
发布于 2010-09-22 08:02:32
使用:
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
发布于 2010-09-22 08:09:48
这应该会帮助您入门。我在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
Full code up on PasteBin。
https://stackoverflow.com/questions/3765286
复制相似问题