我试图找到使用SQL的播放器组合的频率或数量.这是我的数据集
event key team_id player_id
12235384031441051453625936 1 27
12235384031441051453625936 1 11
12235384031441051453625936 1 42
12235384031441051453625936 1 15
12235384031441051453625936 1 6
12235384031441051453625936 2 30
12235384031441051453625936 2 35
12235384031441051453625936 2 9
12235384031441051453625936 2 6
12235384031441051453625936 2 28
12235384031441051453626082 1 14
12235384031441051453626082 1 28
12235384031441051453626082 1 27
12235384031441051453626082 1 9
12235384031441051453626082 1 6
12235384031441051453626082 2 11
12235384031441051453626082 2 27
12235384031441051453626082 2 42
12235384031441051453626082 2 15
12235384031441051453626082 2 6
Run Code Online (Sandbox Code Playgroud)
因此,对于每个赛事,球队1和球队2都有球员,球员代表球员.我有大约500个赛事,很多这些球员将出现在多个赛事中,但并不总是与同一个球员一起出现.每支球队总有5名球员,活动键代表一场比赛.所以我基本上有500个以上的数据集.
我正在努力寻找最常见的团队组成.例如,使用上面的数据集,我看到玩家27,11,42,15,6事件以936结尾,事件结束于082.因此,根据THIS数据集,该团队组合的COUNT为2.
我试图获得一个输出,计算一组玩家出现在同一个团队中的次数,我正在努力想出一个连贯的声明来做到这一点.
我认为获得最常见团队组合的最简单方法是使用listagg()将成员聚集在一起:
select players, count(*) as numevents
from (select listagg(player_id, ',') within group (order by player_id) as players
from t
group by eventkey, team_id
) p
group by players
order by count(*) desc;
Run Code Online (Sandbox Code Playgroud)