sql - 找到交手次数最多的球队对
问题描述
我有一张名为 Involves 的表格:
match | team
10 | A
10 | B
20 | B
20 | C
30 | C
30 | A
40 | D
40 | C
50 | A
50 | B
'match' 列中的值是指比赛的唯一 id,而 'team' 列中的值是指球队的唯一 id。
我正在尝试编写一个查询,该查询将输出对彼此进行最多比赛的球队对。输出显示如下所示:
team1 | team2 | matches
A | B | 2
由于 A 和 B 在两场比赛中交手过,第 10 场和第 50 场比赛。
为了解决这个问题,我认为您必须找到所有可能的团队配对组合,然后找到每对配对的比赛总数。从此结果集中,您可以选择在总比赛中具有最大值的元组。但是,我不确定如何编写这样的查询,尤其是在查找所有配对组合方面。任何见解都值得赞赏。
解决方案
就像是:
SELECT team1
, team2
, COUNT(*) AS matches_played
FROM (
SELECT match
, MIN(team) AS team1
, MAX(team) AS team2
FROM t
GROUP BY match
) AS x
GROUP BY team1, team2
ORDER BY COUNT(*) DESC
(a, b)
内部查询用于生成有序对,例如(a, c)
和(b, c)
。
推荐阅读
- logic - 如果不符合纳入标准,则阻止数据输入
- javascript - Firebase 托管:根据设备平台(移动/PC)提供不同的页面
- mysql - 使用 SQL、CTE 删除重复行和其他所有不起作用的行
- python - 如何确保在 ES API 中捕获所有数据?
- azure-devops - 在 Azure DevOps 中动态访问 Key Vault 机密变量
- c++ - 为什么这段 CPP async 代码会出错,但没有 async 的函数运行良好?
- ember.js - 转换为 Glimmer 组件——服务中的动态属性
- python - keras 图像生成器显示“找到属于 2 个类别的 0 个图像”
- codenameone - 在设置为标签的图标之前如何设置图像的尺寸
- python - 如何获取 Google Drive 视频的直接链接(Google Drive API v3)