簡體   English   中英

基於來自另一個表的條件的SUM列

[英]SUM columns based on condition from another table

我有兩張桌子。

表1是:

Week / Team  / Player  / Stat1 / Stat2 / Stat3 / ...<br>
   1 / Team1 / Player1 / #     / #     / #     / ...<br>
   1 / Team2 / Player2 / #     / #     / #     / ...

表2是:

Player  / Team  / Played Game / Tiebreaker /
Player1 / Team1 / N           / #
Player2 / Team2 / Y           / #

如果“玩過的游戲”顯示為Y,則表示他們至少玩過一場游戲;如果顯示N,則表示他們沒有玩過任何游戲。

我想要做的是將表1中每個玩家的統計信息按列求和,並將表2中的決勝局值添加到表中,但是我想要一個條件,如果玩過的游戲等於N,則僅返回0作為值。 希望這是有道理的。

這是我的代碼:

$sql = "SELECT Player, 

SUM (Stat1) AS Stat1,
SUM (Stat2) AS Stat2,
SUM (Stat3) AS Stat3

FROM Table 1

GROUP BY Player
ORDER BY Stat1 DESC";

顯然這只是為我總結了價值。 我的問題是我不確定如何從另一個表中檢索信息並在同一查詢中執行所需操作。 我已經嘗試使用CASE WHEN和IF語句求和,但是沒有用。 我是新手,所以我想學習,但是我目前仍處於困境。

任何幫助是極大的贊賞。

您需要條件求和,它使用CASE語句作為聚合函數的參數:

SELECT t1.Player, 
       (SUM(CASE WHEN t2.Played = 'Y' THEN Stat1 ELSE 0 END) +
        MAX(CASE WHEN t2.Played = 'Y' THEN TIEBREAKER ELSE 0 END)
       ) AS Stat1,
       SUM(CASE WHEN t2.Played = 'Y' THEN Stat2 ELSE 0 END) AS Stat2,
       SUM(CASE WHEN t2.Played = 'Y' THEN Stat3 ELSE 0 END) AS Stat3
FROM Table1 t1 LEFT JOIN
     Table2 t2
     ON t1.player = t2.player AND t1.team = t2.team
GROUP BY t1.Player
ORDER BY Stat1 DESC;

要從兩個表中獲取數據,請在

`FROM table1, table2` 

並與他們一起

`Where Table1.Player=Table2.Player`

這樣,結果Player列將為每個玩家播放一次,sum列(如Stat1,Stat2,Stat3)將為Table2中每個記錄的Stat列求和,該記錄在Table1中具有對應的Player(所有這些都)。

我不知道php部分,也不知道你的意思

在統計數據匯總后,我只希望平局一次。

但我認為此查詢將在其余時間正常工作。

`SELECT Table2.Player, #I assume Table1.Player has repeat values and stuff,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat1, 0) ) AS Stat1,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat2, 0) ) AS Stat2,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat3, 0) ) AS Stat3
FROM Table1, Table2
Where Table1.Player = Table2.Player
GROUP BY Player
ORDER BY Stat1 DESC";`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM