我正在使用一个 SQLite 数据库,我在其中存储玩家之间的比赛/战斗,如下所示:
matchId[int] 获胜者[文本] 失败者[文本]
我提出了一些查询,总结了一名玩家赢得一场战斗的次数,以及另一项查询总结了一名玩家输掉的战斗次数。但是有没有办法在 SQL 中输入这个,以便我可以直接从数据库找到 win% 或者我必须在其他地方计算它?在其他地方计算这个没有问题,但我很好奇是否/如何可以纯粹用 SQL 来完成它。
我想要实现的基本上是:
SELECT winner, COUNT(winner) as Wins FROM Fights GROUP BY winner
除以
SELECT loser, COUNT(loser) as Losses FROM Fights GROUP BY loser;
对于每个玩家,在这个表中要么是“赢家”,要么是“输家”。我还有一个表(玩家),将所有这些玩家作为“玩家”保存,可用于完成这项工作。
最佳答案
您可以使用union all
和聚合:
select player, avg(win) as win_ratio
from (
select winner as player, 1.0 as win from fights
union all
select loser, 0 from fights
) t
group by player
对于每个至少参加过一场战斗的玩家,这会为您提供一个介于 0
和 1
之间的十进制数字,代表胜率。
关于sql - 从包含 "Winners"和 "Losers"的表中获取获胜百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62407846/