从包含“赢家”和“输家”的表中获取win%

6bc51xsx  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(215)

我正在使用一个sqlite数据库来存储玩家之间的比赛/争斗,比如:
matchid[int]赢家[text]输家[text]
我已经提出了一些问题,总结了多少次,一个球员赢得了一场战斗,另一个球员有多少战斗失败了。但是,在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;

对于每一个玩家来说,这张表中的哪个是“赢家”或者“输家”。我也有一个表(球员),容纳所有这些球员作为“球员”,可以利用这个工作。

qlckcl4x

qlckcl4x1#

你可以用 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 这代表了胜率。

相关问题