php/mysql-计数和分组
我有一个数据库,里面有玩过的游戏和他们的分数。现在,我想运行一个查询,统计每个球队总进球数超过x(主客场合计)的所有结果 数据库结构:php/mysql-计数和分组,php,mysql,count,case,Php,Mysql,Count,Case,我有一个数据库,里面有玩过的游戏和他们的分数。现在,我想运行一个查询,统计每个球队总进球数超过x(主客场合计)的所有结果 数据库结构: +----------+----------+---------------+---------------+ | HomeTeam | AwayTeam | HomeTeamGoals | AwayTeamGoals | +----------+----------+---------------+---------------+ | team1 | t
+----------+----------+---------------+---------------+
| HomeTeam | AwayTeam | HomeTeamGoals | AwayTeamGoals |
+----------+----------+---------------+---------------+
| team1 | team2 | 3 | 1 |
| team3 | team4 | 1 | 2 |
| team1 | team3 | 4 | 4 |
| team4 | team2 | 0 | 1 |
+----------+----------+---------------+---------------+
想要的结果:
+-------+----------+--------------------+
| team | played | games > 3.5 goals |
+-------+----------+--------------------+
| team1 | 2 | 2 |
| team2 | 2 | 1 |
| team3 | 2 | 1 |
| team4 | 2 | 0 |
+-------+----------+--------------------+
我在看这样的东西:
SELECT *, COUNT(*) AS total FROM games WHERE homeTeamGoals + awayTeamGoals > 3.5 GROUP BY homeTeam
但这只适用于主场比赛,因此我需要一种方法将客场比赛也添加到此中。- 分别以
和HomeTeam
的形式获取团队的结果AwayTeam
- 使用
- 将结果用作参考
根据衍生表中的
对团队进行分组,以获得结果
team4
的预期结果错误。team4
的任何对手的总目标都不超过3.5。第4队(与第3队)的一场比赛的总目标为3,而另一场(与第2队)的总目标为1,效果完美:)谢谢!同时阅读union all和派生表!
SELECT derived_t.team,
SUM(derived_t.played) AS played,
SUM(derived_t.games) AS 'games > 3.5 goals'
FROM
(
SELECT t1.HomeTeam as team,
COUNT(*) AS played,
SUM( IF(t1.HomeTeamGoals + t1.AwayTeamGoals > 3.5, 1, 0) ) AS games
FROM your_table AS t1
GROUP BY t1.HomeTeam
UNION ALL
SELECT t1.AwayTeam as team,
COUNT(*) AS played,
SUM( IF(t1.HomeTeamGoals + t1.AwayTeamGoals > 3.5, 1, 0) ) AS games
FROM your_table AS t1
GROUP BY t1.AwayTeam
) AS derived_t
GROUP BY derived_t.team