首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL百分比(有点复杂?)

MySQL百分比(有点复杂?)
EN

Stack Overflow用户
提问于 2010-09-22 07:40:13
回答 2查看 570关注 0票数 0

有几个这样的人,但我今晚要么很慢,要么我正在尝试做一些不可能的事情。我有这样的设置

代码语言:javascript
运行
复制
`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”,我想返回该电影的“相似度”的“百分比”。

我疯了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-22 08:02:32

使用:

代码语言:javascript
运行
复制
  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
票数 0
EN

Stack Overflow用户

发布于 2010-09-22 08:09:48

这应该会帮助您入门。我在SQL Server中使用过TSQL,但是如果语法不同(看起来MySQL中的CAST应该是相同的),只需在这里调整一下,那里就可以让您使用MySQL了。

代码语言:javascript
运行
复制
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

  • 1的
  • 2项具有值-2

的项

结果如下:

代码语言:javascript
运行
复制
Score | PercentageVotes
------+----------------
2.00  |   66.6666666
-2.0  |   33.3333333

Full code up on PasteBin

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3765286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档