我正在建立一个游戏网站作为业余爱好,我想为其中的每个冠军添加一个胜利百分比。我跟踪我的数据库中的每个匹配,结果列可以是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进一步排序。
感谢您的时间
答案 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;