sql - 使用 SQL 计算多对多关系
问题描述
我有表 1,其中两列作为我的输入,需要使用 SQL 进入表 2,其中三列作为我的输出。数据集有大量行。我如何使用 SQL 来获取表 1 中所有 EA 对的计数,并通过它们对应的 E 数量进行归一化。每个 EA 对是一行。输入见表 1,所需输出见表 2。非常感谢您的帮助 !
解决方案
您可以使用聚合和窗口函数:
select
e,
a,
count(*) occurences,
1.0 * count(*) / sum(count(*)) over (partition by e) frequency
from mytable
group by e, a
这将a
ande
放在两个不同的列中;concat()
如果您希望它们在一列中,您可以使用或类似的东西。
推荐阅读
- python - ** 之后的类型对象参数必须是映射,而不是 str
- python - 如何在python中打印二维数组
- javascript - 从弹出窗口重定向时恢复窗口大小
- linux - 错误的性能回溯
- reactjs - 在 React 中,如何在运行时而不是在实例化时将数据传递给孩子
- java - 尝试在另一个方法中实现 2 个方法时出错 - java
- javascript - 可以用节点进行弹性搜索,只更新某个字段而不重写吗?
- graphviz - 如何创建一个所有断开组件垂直对齐的图形?
- reactjs - 在 React 的自动完成字段中为键入的字母添加标签
- reactjs - 如何修复'TypeError:null不是对象(评估'data [index]')