我有一个足球比赛中所有历史比赛的比赛表。它大约有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
我刚加了一个,试图解释得更好。谢谢! –