从包含“优胜者”和“失败者”的表格中获得胜率%

问题描述 投票:1回答:1

我正在使用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;

对于每个玩家,在此表中是“胜利者”或“失败者”。我还有一张桌子(Players),将所有这些球员都视为“球员”,可以用来完成这项工作。

sql sqlite select group-by union
1个回答
0
投票

您可以使用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

[这给您每个参与至少一场战斗的玩家一个在01之间的十进制数字,代表获胜率。

© www.soinside.com 2019 - 2024. All rights reserved.