我正在使用一个SQLite数据库来存储玩家之间的比赛/战斗,就像这样:
matchId [int]获胜者[文本]失败者[文本]
我进行了查询,以汇总一名球员赢得了一场战斗的次数,而另一项则是关于一名球员输了多少场战斗的信息。但是,在SQL中,有没有一种方法可以键入此值,以便我可以直接从数据库中找到胜率,还是必须在其他地方计算出胜率?在别处计算该值没有问题,但是我很想知道是否/如何可以完全在SQL中完成它。
我想要实现的基本上是:
SELECT winner, COUNT(winner) as Wins FROM Fights GROUP BY winner
除以
SELECT loser, COUNT(loser) as Losses FROM Fights GROUP BY loser;
对于每个玩家,在此表中是“赢家”或“输家”。我还有一个表格(玩家),将所有这些玩家保存为“玩家”,可以用来完成这项工作。
答案 0 :(得分:1)
您可以使用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
之间的十进制数字,代表获胜率。