mysql - 生成查询以比较头对头统计数据

标签 mysql sql

我正在尝试弄清楚如何生成一个查询,以查看当两名球员作为队长在一场比赛中对战时他们之间的胜率。

我在 http://sqlfiddle.com/#!2/a2f8c/1 的 sqlfiddle 上创建了模式

表格(称为游戏)及其相关字段是:

gameID | pID | pWin | pLose | pCaptain
 100      1     0       1        1
 100      2     1       0        1

如果玩家赢了一场比赛,pWin 设置为 1,pLose 设置为 0,而失败者将在 pWin 中获得 0,在 pLose 中获得 1。如果他们是那场比赛挑选球队的队长,则 pCaptain 设置为 1。

我希望能够输入两个玩家 ID 并获得胜率。一段时间以来,我一直在修改一些查询,但所涉及的查询超出了我对 SQL 的了解。

如果有任何帮助,我将不胜感激!

最佳答案

有点像

SELECT p1.sumwin/(p1.sumwin + p2.sumwin)*100 as p1,
       p2.sumwin/(p1.sumwin + p2.sumwin)*100 as p2
FROM
      (SELECT pID, sum(pWin) sumWin
         FROM games
        WHERE  pCaptain = 1
        GROUP BY pID) p1,
      (SELECT pID, sum(pWin) sumWin
         FROM games
        WHERE  pCaptain = 1
        GROUP BY pID) p2
WHERE p1.pid = 1 AND
      p2.pid = 2

或者我没听懂你的意思(在那种情况下很抱歉)。

@MotiveKyle 现在好点了吗?

SELECT (sum(p1.pWin)/(sum(p1.pWin) + sum(p2.pWin)))*100 p1Win,
        (sum(p2.pWin)/(sum(p1.pWin) + sum(p2.pWin)))*100 p2Win
FROM
      (SELECT pID, pWin, gameID
         FROM games
        WHERE  pCaptain = 1) p1,
      (SELECT pID, pWin, gameID
         FROM games
        WHERE  pCaptain = 1) p2
WHERE p1.gameID = p2.gameID AND
      p1.pID = 1 AND
      p2.pID = 2      

基本上它说:

  1. 收集 p1 中所有玩家的所有游戏
  2. 收集p2中所有玩家的所有游戏
  3. 通过游戏加入 subview p1 和 p2
  4. 将结果过滤为玩家 1 和玩家 2 玩过的游戏
  5. 总结双方玩家的所有胜利并计算百分比。

关于mysql - 生成查询以比较头对头统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752164/

相关文章:

PHP Count SQL 没有给出结果

mysql - SQL - 如何根据 A 和 B 之间的现有关系在表 A 和 C 之间创建新关系 - 大量?

php - 我希望我的按钮可以更改状态集,但不是更改它,而是转到 href 页面

sql - SELECT sql 返回 3 行列中值的总和作为第二列值,依此类推

php - 一个 SQL 查询中的多个计数

mysql - 在 MySQL 中获取日期时间字段和 NOW() 之间的时间间隔

MySQL 计数变化

MySQL 使用 LIKE 搜索查询

sql - Spark Scala : Getting Cumulative Sum (Running Total) Using Analytical Functions

python - 使用子查询创建单个查询,本质上是一个带有选择查询的插入查询