每个ID出现的字段百分比

时间:2016-11-14 18:07:25

标签: mysql sql

我正在建立一个游戏网站作为业余爱好,我想为其中的每个冠军添加一个胜利百分比。我跟踪我的数据库中的每个匹配,结果列可以是0或1表示丢失或获胜。我正在使用MySql。我希望我的结果表是这样的:

ChampID | Wins | Loss | Percentage
12        1      1      50%
13        2      0      100%

我的匹配表如下所示:

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%的胜利。

我一直在尝试工会和加入,但我无法让他们正确,这是我最接近的。

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进一步排序。

感谢您的时间

1 个答案:

答案 0 :(得分:2)

做一些简单的数学就可以做到这一点。没有理由通过联接和子查询获得创意:

 SELECT sum(matchoutcome)/count(matchid) FROM Matches where PlayerID = 12;

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

SELECT playerID, sum(matchoutcome)/count(matchid) FROM Matches GROUP BY playerID;

您也可以在此转换为百分比:

SELECT playerID, (sum(matchoutcome)/count(matchid))*100 FROM Matches GROUP BY playerID;

在单独的列中输出胜利和损失:

SELECT playerID, 
    sum(matchOutcome) as Wins,
    Count(matchid) - sum(matchOutcome) as Losses,
    (sum(matchoutcome)/count(matchid))*100 
FROM Matches 
GROUP BY playerID;