LeetCode-1212. 查询球队积分(中等)

admin 42 2024-02-11 01:12:50

  Table: Teams

  +---------------+----------+

  | Column Name   | Type     |

  +---------------+----------+

  | team_id       | int      |

  | team_name     | varchar  |

  +---------------+----------+

  此表的主键是 team_id,表中的每一行都代表一支独立足球队。

  Table: Matches

  +---------------+---------+

  | Column Name   | Type    |

  +---------------+---------+

  | match_id      | int     |

  | host_team     | int     |

  | guest_team    | int     |

  | host_goals    | int     |

  | guest_goals   | int     |

  +---------------+---------+

  此表的主键是 match_id,表中的每一行都代表一场已结束的比赛,比赛的主客队分别由它们自己的 id 表示,他们的进球由 host_goals 和 guest_goals 分别表示。

  积分规则如下:

  赢一场得三分;

  平一场得一分;

  输一场不得分。

  写出一条SQL语句以查询每个队的 team_id,team_name 和 num_points大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。结果根据 num_points 降序排序,如果有两队积分相同,那么这两队按 team_id  升序排序。

  查询结果格式如下:

  Teams table:

  +-----------+--------------+

  | team_id   | team_name    |

  +-----------+--------------+

  | 10        | Leetcode FC  |

  | 20        | NewYork FC   |

  | 30        | Atlanta FC   |

  | 40        | Chicago FC   |

  | 50        | Toronto FC   |大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  +-----------+--------------+

  Matches table:

  +------------+--------------+---------------+-------------+--------------+

  | match_id   | host_team    | guest_team    | host_goals  | guest_goals  |

  +------------+--------------+---------------+-------------+--------------+

  | 1          | 10           | 20            | 3           | 0            |

  | 2          | 30           | 10            | 2           | 2            |

  | 3          | 10           | 50            | 5           | 1            |

  | 4          | 20           | 30            | 1           | 0            |

  | 5          | 50           | 30            | 1           | 0            |

  +------------+--------------+---------------+-------------+--------------+

  Result table:

  +------------+--------------+---------------+

  | team_id    | team_name    | num_points    |

  +------------+--------------+---------------+

  | 10         | Leetcode FC  | 7             |

  | 20         | NewYork FC   | 3             |

  | 50         | Toronto FC   | 3             |

  | 30         | Atlanta FC   | 1             |

  | 40         | Chicago FC   | 0             |

  +------------+--------------+---------------+大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!

  来源:力扣(LeetCode)

  链接:https://leetcode-cn.com/problems/team-scores-in-football-tournament

  著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  审题:写出一条SQL语句以查询每个队的 team_id,team_name 和 num_points。结果根据 num_points 降序排序,如果有两队积分相同,那么这两队按 team_id  升序排序。

  根据进球数,计算比分,最后求和。

  思考:首先根据结果对数据加工,算出主队客队的本场比赛积分,然后求所有球队id的比分和。

  解题:

  方法一:思路:求id,队名,分数。

  首先通过union all将比赛结果表,将对两队的结果,联合起来。如果五场比赛,相当于10个球队,将比赛表左右两边对调,就可以是五场比赛的十支球队结果都包含了。

  然后通过teams表left join 使得左边肯定多于右边,判断通过on后边的条件对比,右边分组里的每一行通过对比判断积分,求和。

  最后按照条件排序即可。

  方法二:

  知识点:

  UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!

LeetCode-1212. 查询球队积分(中等)

LeetCode-1212. 查询球队积分(中等)

上一篇:为何中国足球水平不升反降?应该如何积极自救?
下一篇:今日竞彩推荐 足球赛事扫盘分析 亚指解析 比分预测 进球数 半全
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

返回顶部小火箭