我正在尝试弄清楚如何生成一个查询,以查看当两名球员作为队长在一场比赛中对战时他们之间的胜率。
我在 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
基本上它说:
- 收集 p1 中所有玩家的所有游戏
- 收集p2中所有玩家的所有游戏
- 通过游戏加入 subview p1 和 p2
- 将结果过滤为玩家 1 和玩家 2 玩过的游戏
- 总结双方玩家的所有胜利并计算百分比。
关于mysql - 生成查询以比较头对头统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752164/