我有一張表和一個遊戲列表,它有團隊ID和遊戲中的分數。用於獲取2隊比賽記錄的SQL語句
這是表結構。
ID HOMETEAM HOMETEAMSCORE AWAYTEAM AWAYTEAMSCORE
- 各隊在一場比賽中得分將在各列。
- 當比賽沒有開始時,兩隊的比分都是0。
- 當比賽結束時,沒有比賽可以有0-0比分。
我需要獲得2個特定團隊的遊戲記錄。例如,對於球隊1和球隊2,我需要輸出爲1-3,這意味着球隊1贏得了一次對陣球隊2,球隊2贏得了3次球隊1的衝擊。
我正在使用下面的SQL它在一定程度上起作用。但是我需要爲0-0還沒有開始的比賽輸出(比分0-0)。
SELECT least(homeTeam, awayTeam) team1,
greatest(homeTeam, awayTeam) team2,
sum(case when awayTeam > homeTeam
then case when homeTeamScore > awayTeamScore then 1 else 0 end else case when homeTeamScore > awayTeamScore then 0 else 1 end
end) team1Wins,
sum(case when hometeam > awayteam
then case when homeTeamScore > awayTeamScore then 1 else 0 end else case when homeTeamScore > awayTeamScore then 0 else 1 end
end) team2Wins
FROM ow_sports_games
GROUP BY least(homeTeam, awayTeam),
greatest(homeTeam, awayTeam)
還有沒有更好的方法來有更好的SQL以外的呢?
SQL小提琴:http://sqlfiddle.com/#!2/10326/4/1
編輯:
一些樣本數據來解釋我的要求的詳細信息:
HOMETEAM HOMETEAMSCORE AWAYTEAM AWAYTEAMSCORE
18 1 22 0
22 2 18 1
18 3 22 2
12 0 13 0
對於球隊18,22輸出應該是2-1,因爲18隊有2勝,22隊有1勝。
對於球隊12和13,輸出應該是0-0,因爲沒有比賽完成。
輸出樣本解釋總體情況:
HomeTeam AwayTeam Records
18 22 2-1
22 18 1-2
12 13 0-0
快速瀏覽後,‘或’WHERE awayteamscore> 0或hometeamscore> 0也許應該被取代, –
號。一場比賽的比分可以是3-0,在這種情況下,AND將會n不要認爲那個遊戲是有效的。不考慮只有0-0的比賽成績。 – Purus
我其實不明白你的問題:)你是否想過使用NULL來區分0分和即將到來的遊戲? –