2016-02-01 131 views
0

時,下面的查詢將總結每場比賽的目標:SQL計數,其中結果超過一定數量

SELECT 
    SUM(Goals) 
FROM `Team Match Table` 
WHERE Match_Id IN (SELECT ID FROM Match Table 
    WHERE HomeTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen') 
    OR AwayTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen')) 
GROUP by Match_Id 

是否有可能怎麼算的結果很多都是超過一定數目更大?

+1

你應該花一些時間來格式化你的查詢。另外,樣本數據和期望的結果將有助於溝通你想要做的事情。 –

回答

0

使用SUM()上給你計數的條件:

SELECT 
    SUM(Goals) total_goals, 
    SUM(Goals > 5) over_5_goals_count 
FROM `Team Match Table` 
WHERE Match_Id IN (SELECT ID FROM Match Table 
    WHERE HomeTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen') 
    OR AwayTeam_ID = (SELECT ID FROM `Team Table` WHERE `Team Name` = 'Aberdeen')) 
GROUP by Match_Id 

此作品(只有MySQL的),因爲MySQL對待true1false0,使總結的條件的結果給你這是真的次數。

我選擇了> 5作爲條件。你可以使用任何你想要的門檻。

0

表名'Team Match Table是否正確'?由於sql不允許用空格創建表名。

以完美的格式查詢。 (從team_table中選擇id)(從team_table中選擇id,其中team_name ='Aberdeen'))選擇隊列中的總和(目標)其中match_is );

而不是給出一個條件,你可以使用表中的特定值來取得完美的結果。

剛剛列出你有的表,其共同列以及

0

嘗試;

SELECT Match_id, SUM(`Goals`) 
FROM `Team Match Table` 
WHERE `Match_Id` IN (SELECT `ID` FROM `Match Table` 
       WHERE `HomeTeam_ID` = (SELECT `ID` FROM `Team Table` 
             WHERE `Team Name` = 'Aberdeen') 
        OR `AwayTeam_ID` = (SELECT `ID` FROM `Team Table` 
             WHERE `Team Name` = 'Aberdeen')) 
GROUP by `Match_Id` 
HAVING SUM('Goals') >= DesiredNumber --Change DesiredNumber to a numeric value you wish to filter by 

我已經把Match_id在返回的列,這樣就可以知道哪些比賽有你想要返回進球數。它也會告訴你在這場比賽中的進球數量