mysql - 按字典顺序选择团队配对及其相对表现之间的匹配
问题描述
我们得到一个名为 football_tournaments 的数据表。该表包含以下列:
- 主队
- 客队
- home_score(主队进球数)
- away_score(客队进球数)
我们需要编写 Select SQL 查询以按字典顺序打印数据集中存在的所有团队对。我们需要输出包含球队的名称、他们之间的比赛以及该对中第一支球队的胜率。
我无法编写 SQL 查询来配对这些团队。
假设输出应如下所示:
澳大利亚 英国 31%
英格兰 威尔士 58% .....等
解决方案
基本上,您需要对数据进行规范化,以便团队处于相同的顺序。在 MySQL 中,您可以使用least()
and来执行此操作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;
推荐阅读
- prometheus - Prometheus 报告 node_memory_Active_bytes 和 free -b 的值不同
- graphics - 通过代码建立一个更大的显示缓冲区
- silverstripe - How to override the existing method of an existing class, FlysystemAssetStore that is part of the framework in SilverStripe
- c - segmentation fault (core dumped) error in a c program for combination function
- ember.js - Ember.Js Using TransitionTo Route with dynamic segment
- java - 应用程序在第二次启动时崩溃,不会将密钥保留在内存中
- python - Python count list's values and put them in ordered list without library
- julia - How to not shadow variable in inner block in Julia?
- javascript - d3js 时间线图 - 一个矩形块用于擦洗
- html - 在 90 度文本上添加字母间距时出现 CSS 悬停状态问题