2013-07-30 52 views
1

我試圖完成以下事項執行數學函數2代表的JOIN - 用COUNT函數每個

我對足球的球隊(不是由我創建2個表,這是我一起工作):

won_matches- 
columns: team_id | match_name | scored_goals 

lost_matches- 
columns: team_id | match_name | scored_goals 

teams_names- 
team_id | team_name 

(我不關心比賽名稱或進球數)

我需要做的是計算每個團隊有多少項已在won_matches表以及它在lost_matches表中有多少個條目,然後將lost_match的數量進行分割由won_matches的數量,從而得到一個失去/贏得的比賽。 然後我需要爲每個團隊(或所有團隊)提供這個比率以及團隊名稱。

我試過這樣出頭,但需要它不工作:

SELECT b. team_name, (SELECT COUNT(team_id) 
FROM won_matches [***optional; WHERE team_id=37***])/COUNT(a.team_id)*100 AS lost_won_ratio 
FROM lost_matches a 
join teams_names b on a.team_id=b.team_id 
[***optional; WHERE a.team_id=37***] 

將是您的建議表示感謝。

+0

您需要了解JOIN操作:http://en.wikipedia.org/wiki/Join_%28SQL%29,語法特別... –

+0

考慮了自己的方式工作,以權威的地位,射擊大家負責這個設計,然後改制消除對UNION – Strawberry

回答

0

嘗試這樣:

select team_id, Won, count(*) as Matches, sum(scored_goals) as Goals 
from 
(select 1 as Won, Team_id, scored_goals from won_matches 
union all 
select 0 as Won, team_id, scored_goals from lost_matches) x 
group by team_id, Won 
0

我覺得這樣的事情會做的伎倆:

select team_id, 
     count(won), count(lost), 
     count(won)/(count(won)+count(lost)) as 'Win ratio' from 
(
select True as won, NULL as lost, won_matches.* from won_matches 
union all 
select NULL as won, True as lost, lost_matches.* from lost_matches 
) as S group by team_id 

http://sqlfiddle.com/#!2/6dbaf/2(編輯:使用連接到顯示的隊名)

請注意我不考慮可能的繪製匹配,因爲我不知道這是如何存儲在您的數據庫中。

EDIT通知以及我用count(won)/(count(won)+count(lost))作爲計數比公式。這似乎更合乎邏輯。如果你堅持count(lost)/count(win)你將不得不0的情況下應對鴻溝......

+0

西爾的需要,這似乎爲我工作。雖然 一個問題,據我所知,工會只能處理兩個quesries,所以你會如何添加與teams_names表的連接呢? (在結果中顯示團隊名稱及其ID) – Rani

+0

@Rani您可以使用「JOIN」。見http://sqlfiddle.com/#!2/6dbaf/2 –

+0

謝謝西爾維安。 – Rani

0

這樣的事情應該工作。

SELECT tn.teamID, sum(won_matches.teamID) as WON, sum(lost_matches.teamID) as LOST,(sum(won_matches.teamID)/sum(lost_matches.teamID)) as WLratio 
From teams_names AS tn LEFT JOIN won_matches ON tn.teamID = won_matches.teamID LEFT JOIN lost_matches ON tn.teamID = lost_matches.teamID 
+0

這裏只有問題是1/0或0/1。其中你可以使用一個case語句 – Elias