sql在国家表,对战表,进球表里查询请查询 D 组各场比赛的进球数。进球数为 0 时也要显示。 显示项目:开球时间、本国名、对战国名、本国的进球数、对战国的进球数、进球数差 显示顺序:开球时间的升序、本国的 FIFA 排名的升序并按句解释
时间: 2024-05-22 22:15:30 浏览: 9
SELECT
game_date AS '开球时间',
home_team.country_name AS '本国名',
away_team.country_name AS '对战国名',
IFNULL(home_goals,0) AS '本国的进球数',
IFNULL(away_goals,0) AS '对战国的进球数',
IFNULL(home_goals,0) - IFNULL(away_goals,0) AS '进球数差'
FROM
matches
JOIN countries AS home_team ON matches.home_team_id = home_team.id
JOIN countries AS away_team ON matches.away_team_id = away_team.id
WHERE
home_team.group_id = 'D' AND away_team.group_id = 'D'
ORDER BY
game_date ASC,
home_team.fifa_ranking ASC;
在该SQL语句中:
- 我们从比赛表中获取比赛日期和主队、客队的ID。
- 然后通过JOIN语句将国家表中的主队和客队信息连接到比赛表中。
- 我们筛选出D组的比赛,并将主队和客队的进球数与进球数差计算出来。
- 最后按比赛日期和主队FIFA排名升序排序。
相关问题
请查询 D 组各场比赛的进球数。进球数为 0 时也要显示。 显示项目:开球时间、本国名、对战国名、本国的进球数、对战国的进球数、进球数差 显示顺序:开球时间的升序、本国的 FIFA 排名的升序sql思路
根据题目要求,需要查询 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 排名进行排序。
sql 查询 从sell_information表中查找每个用户在每个国家的消费订单数,如果没有则为0
可以使用以下 SQL 语句实现:
```
SELECT user_id, country, COUNT(order_id) AS order_count
FROM (
SELECT DISTINCT user_id, country
FROM sell_information
) AS user_country
LEFT JOIN sell_information
ON user_country.user_id = sell_information.user_id AND user_country.country = sell_information.country
GROUP BY user_id, country
```
这个 SQL 查询会先通过 `DISTINCT` 关键字获取每个用户在每个国家的唯一组合,然后使用 `LEFT JOIN` 连接原始表格以获取每个用户在每个国家的订单数。最后使用 `GROUP BY` 对用户和国家进行分组,并使用 `COUNT` 函数计算订单数。如果没有订单,则会显示为 0。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)