Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 生成查询以比较头部到头部的统计信息_Mysql_Sql - Fatal编程技术网

Mysql 生成查询以比较头部到头部的统计信息

Mysql 生成查询以比较头部到头部的统计信息,mysql,sql,Mysql,Sql,我试图找出如何生成一个查询,以查看当两名球员在一场比赛中是队长时,他们之间的获胜百分比 我在sqlfiddle上创建了模式 表(称为游戏)及其相关字段为: gameID | pID | pWin | pLose | pCaptain 100 1 0 1 1 100 2 1 0 1 如果一个玩家赢了一场比赛,pWin设置为1,pLose设置为0,而失败者pWin将得到0,pLose将得到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      
基本上是这样写的:

  • 收集p1中所有玩家的所有游戏
  • 收集p2中所有玩家的所有游戏
  • 通过游戏连接子视图p1和p2
  • 将结果过滤到玩家1和玩家2玩的游戏
  • 计算两名玩家的所有胜利并计算百分比

  • 非常接近。起初,我认为这是有效的,但似乎只是计算每个人作为队长赢得比赛的次数,而不是与其他球员的比赛。例如,每个队只能有一名队长,因此,如果有3场比赛中,球员1是队1的队长,球员2是队2的队长,球员1在这3场比赛中赢了2场,那么他将有66%的胜率。