按字典顺序选择团队配对及其相对表现之间的匹配

Posted

技术标签:

【中文标题】按字典顺序选择团队配对及其相对表现之间的匹配【英文标题】:Selecting match up between team pairs and their relative performance lexicographically 【发布时间】:2019-09-09 09:42:20 【问题描述】:

我们得到了一个名为 football_tournaments 的数据表。该表包含以下列:

    home_team away_team home_score(主队进球数) away_score(客队进球数)

我们需要编写 Select SQL 查询以按字典顺序打印数据集中存在的所有团队对。我们需要输出包含球队的名称、他们之间的比赛以及该对中第一支球队的胜率。

我无法编写 SQL 查询来配对这些团队。

假设的输出应该如下所示:

澳大利亚英格兰 31%

英格兰威尔士 58% .....等

【问题讨论】:

这个问题很像家庭作业/工作面试问题。我建议你阅读How do I ask and answer homework questions? 提示:乍一看,查询很可能需要自连接 【参考方案1】:

基本上,您需要对数据进行规范化,以便团队处于相同的顺序。在 mysql 中,您可以使用 least()greatest() 执行此操作。然后,只需聚合:

select team1, team2, count(*) as num_games, avg(is_win) as win_ratio
from (select least(home_team, away_team) as team1,
             greatest(home_team, away_team) as team2,
             (case when home_score > away_score and
                        home_team = least(home_team, away_team)
                   then 1
                   when away_score > home_score and
                        away_team = least(home_team, away_team)
                   then 1
                   else 0
              end) as is_win
      from t
     ) t
group by team1, team2;

【讨论】:

以上是关于按字典顺序选择团队配对及其相对表现之间的匹配的主要内容,如果未能解决你的问题,请参考以下文章

从照片中提取后,视频及其缩略图未按顺序保存

excel两列乱序姓名一一对应

JAVA按着字典顺序排序

1876. 外星人字典(简单)

按字母顺序排列的字典键[重复]

数据结构之串及其模式匹配