首页 > 解决方案 > 使用 SQL 计算多对多关系

问题描述

我有表 1,其中两列作为我的输入,需要使用 SQL 进入表 2,其中三列作为我的输出。数据集有大量行。我如何使用 SQL 来获取表 1 中所有 EA 对的计数,并通过它们对应的 E 数量进行归一化。每个 EA 对是一行。输入见表 1,所需输出见表 2。非常感谢您的帮助 !

在此处输入图像描述

标签: sql

解决方案


您可以使用聚合和窗口函数:

select
    e,
    a,
    count(*) occurences,
    1.0 * count(*) / sum(count(*)) over (partition by e) frequency
from mytable
group by e, a

这将aande放在两个不同的列中;concat()如果您希望它们在一列中,您可以使用或类似的东西。


推荐阅读