【问题标题】:Getting win % from a table that holds "Winners" and "Losers"从包含“赢家”和“输家”的表格中获取获胜百分比
【发布时间】:2020-10-06 00:33:42
【问题描述】:

我正在使用一个 SQLite 数据库来存储玩家之间的比赛/战斗,如下所示:

ma​​tchId[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;

对于每个玩家,在此表中是“赢家”或“输家”。我还有一个表(玩家),将所有这些玩家作为“玩家”,可以用来完成这项工作。

【问题讨论】:

    标签: sql sqlite select group-by union


    【解决方案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
    

    这为您提供了,对于每个参加过至少一场战斗的玩家,一个介于 01 之间的十进制数字,代表胜率。

    【讨论】:

      猜你喜欢
      • 2019-07-15
      • 2013-11-07
      • 2019-09-17
      • 2022-01-17
      • 1970-01-01
      • 2019-07-04
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多