2012-03-17 67 views
1

我想弄清楚如何生成一個查詢來查看兩個玩家之間的勝利百分比,當他們是一個隊隊長在遊戲中對彼此。生成一個查詢來比較頭對頭的統計

我創建了sqlfiddle架構在http://sqlfiddle.com/#!2/a2f8c/1

表(稱爲遊戲)和它的相關領域是:

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的知識。

我很感激任何幫助!

回答

2

喜歡的東西

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  

Basicly它說:

  1. 收集所有玩家P1
  2. 所有遊戲收集所有玩家的所有遊戲在P2
  3. 通過遊戲
  4. 加入子視圖p1和p2
  5. 過濾結果給玩家1和玩家2玩的遊戲
  6. sumarize all wins fro m兩位球員並計算百分比。
+0

這非常接近。起初,我認爲它是有效的,但它似乎只是計算每個人贏得隊長的次數,而不是針對其他玩家。例如,每個隊只能有一個隊長,所以如果有3場比賽,其中隊員1是隊長1的隊長,隊員2是隊長2,隊員1在這3場比賽中贏得2場,他將獲得66%的勝利百分比。 – Motive 2012-03-17 18:27:52

+0

這似乎是做的伎倆,感謝您的幫助! – Motive 2012-03-17 19:22:39