我有一個足球比賽中所有歷史比賽的比賽表。它大約有30000場比賽,我的挑戰是爲特定隊伍和其他隊伍找回勝利,平局和失敗。如何根據Group BY列對兩個查詢的結果進行求和?
對於我的問題我就用畫,爲了找回我的畫我有2種可能的方案:
球隊是主隊
隊是客場團隊
所以根據我的數據的查詢在我的隊是主隊的第一個場景是這樣的:
SELECT
matches.away_team as VS,
COUNT(matches.idmatch) AS TIES
FROM
my_football_database.matches
WHERE
home_team = 14
AND home_team_goals = away_team_goals
AND aet = "N" AND PK = "N"
GROUP BY
away_team
LIMIT 5;
輸出:
+------+------+
| VS | TIES |
+------+------+
| 2 | 1 |
| 3 | 3 |
| 4 | 2 |
| 8 | 1 |
| 9 | 3 |
+------+------+
第二種情況是,當我的球隊是客隊,所以它是這樣的:
SELECT
matches.home_team as VS,
COUNT(matches.idmatch) AS TIES
FROM
my_football_database.matches
WHERE
away_team = 14
AND home_team_goals = away_team_goals
AND aet = "N" AND PK = "N"
GROUP BY
home_team
LIMIT 5;
輸出:
+------+------+
| VS | TIES |
+------+------+
| 2 | 4 |
| 3 | 2 |
| 7 | 1 |
| 8 | 3 |
| 9 | 1 |
+------+------+
由於你可以看到一個例子:
- 當我的團隊(ID = 14)被打的主隊VS團隊ID = 3,共3場比賽的結束爲平局
- 在第二個結果是,當我的球隊(ID = 14)是作爲客場對陣球隊ID = 3,總共2場比賽結束爲平局
如何根據「VS」ID結果TIES的結果?比如,在列出作爲主隊參賽的球隊的所有關係之後,根據客隊分組,並列出作爲客隊參賽隊的所有關係,由主隊歸類,根據「Vs」ID加入兩列。
的示例結果在這種情況下將是:
+------+------+
| VS | TIES |
+------+------+
| 2 | 5 |
| 3 | 5 |
| 4 | 2 |
| 7 | 1 |
| 8 | 4 |
| 9 | 4 |
+------+------+
注:我得去找一個單一的查詢,可以給我一個表的所有勝點,丟失,並繪製了給予球隊,他們與他們對陣的球隊分組。
這是14個總的情況。主場和客場抽籤(2),主客場勝利,獲獎並受到處罰(6)。主場和客場失去常規,獲獎和罰球(6)。
因此,我並不是在尋找可能解決Draws交易的一段代碼,而更像是一個關於如何研究,研究或實施這個問題的提示。我的第一個想法是分別創建每個場景,然後將它們用作子查詢,但我被告知這對性能不方便。
我無法理解你的描述。你能展示一個期望結果的樣本嗎? – Barmar
我剛加了一個,試圖解釋得更好。謝謝! –