首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个ID字段出现的百分比。

问每个ID字段出现的百分比。
EN

Stack Overflow用户
提问于 2016-11-14 18:07:24
回答 1查看 25关注 0票数 0

我正在制作一个游戏的网站,作为一个爱好,我想增加一个赢的百分比为每个冠军在其中。我跟踪我的DB中的每一场比赛,结果列可以是0或1,如果输或赢。我正在使用MySql。我希望我的结果表是这样的:

代码语言:javascript
复制
ChampID | Wins | Loss | Percentage
12        1      1      50%
13        2      0      100%

我的火柴表是这样的:

代码语言:javascript
复制
MatchID | ChampID | PlayerID | MatchOutcome
1         12        1231       1
2         12        1414       0
3         13        1341       1
4         13        1512       1

所以ID 12的冠军会有50%的胜率,而13会有100%的胜率。

我一直在尝试加入工会,但我没能把他们做好,这是我最近的一次。

代码语言:javascript
复制
SELECT
(SELECT COUNT(*) FROM Matches WHERE (MatchOutcome LIKE "0")) AS Loss,
(SELECT COUNT(*) FROM Matches WHERE (MatchOutcome LIKE "1")) AS Win, 
(SELECT (Win/(Win+Loss))*100 ) AS Percentage

这个方法似乎是最有希望的,因为我也希望能够通过PlayerID进行进一步的排序。

耽误您时间,实在对不起

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-14 18:13:58

只需做一些简单的数学来做这个。没有理由对联接和子查询产生创造性:

代码语言:javascript
复制
 SELECT sum(matchoutcome)/count(matchid) FROM Matches where PlayerID = 12;

或者,对于列表中的每一个玩家:

代码语言:javascript
复制
SELECT playerID, sum(matchoutcome)/count(matchid) FROM Matches GROUP BY playerID;

您也可以在这里进行转换为百分比:

代码语言:javascript
复制
SELECT playerID, (sum(matchoutcome)/count(matchid))*100 FROM Matches GROUP BY playerID;

要在不同的栏目中获得得失:

代码语言:javascript
复制
SELECT playerID, 
    sum(matchOutcome) as Wins,
    Count(matchid) - sum(matchOutcome) as Losses,
    (sum(matchoutcome)/count(matchid))*100 
FROM Matches 
GROUP BY playerID;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40595095

复制
相关文章

相似问题

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