请查询 D 组各场比赛的进球数。进球数为 0 时也要显示。 显示项目:开球时间、本国名、对战国名、本国的进球数、对战国的进球数、进球数差 显示顺序:开球时间的升序、本国的 FIFA 排名的升序sql思路
时间: 2024-05-08 20:17:25 浏览: 90
根据题目要求,需要查询 D 组各场比赛的进球数。因此,需要使用联结查询,将比赛数据和进球数据进行联结,然后再根据比赛时间和国家 FIFA 排名进行排序。
具体的 SQL 代码如下:
```
SELECT m.kickoff_time, m.home_team, m.away_team,
IFNULL(SUM(CASE WHEN g.team = m.home_team THEN 1 ELSE 0 END), 0) AS home_goals,
IFNULL(SUM(CASE WHEN g.team = m.away_team THEN 1 ELSE 0 END), 0) AS away_goals,
IFNULL(SUM(CASE WHEN g.team = m.home_team THEN 1 ELSE -1 END), 0) AS goal_diff
FROM matches m
LEFT JOIN goals g ON m.match_id = g.match_id
WHERE m.group_name = 'D'
GROUP BY m.match_id
ORDER BY m.kickoff_time ASC, m.home_rank ASC;
```
解释:
- 使用 LEFT JOIN 进行联结查询,将比赛数据和进球数据进行联结。
- 使用 IFNULL 函数,对进球数为 0 的情况进行处理。
- 使用 SUM 和 CASE WHEN 函数,对每个国家的进球数进行统计。
- 使用 GROUP BY 对比赛进行分组,以便对每场比赛进行统计。
- 使用 ORDER BY 对比赛时间和国家 FIFA 排名进行排序。
阅读全文