给定一个2列表,其中第一列中始终至少出现2次值,并且该列中的每个不同值都与第二列中的不同值匹配。
所以喜欢:
X | AA
X | BB
Z | CC
Z | BB
Z | AA
W | AA
W | BB
W | CC
如何获得第二列中值对的关联频率或计数?
所以拿第一张桌子,你最终得到的结果是:
AA,BB | 3
AA,CC | 2
CC,BB | 2
其中第二列是第一列对的出现次数
哦,顺序无关紧要,但应该只发生一次
AA,BB = BB,AA
答案 0 :(得分:1)
您可以使用自联接生成所有组合的列表:
select t.col1, t.col2, t.col2 || ',' || t2.col2
from table t join
table t2
on t.col1 = t2.col1 and t.col2 < t2.col2;
然后你可以计算它们:
select pairs, count(*)
from (select t.col1, t.col2, t.col2 || ',' || t2.col2 as pairs
from table t join
table t2
on t.col1 = t2.col1 and t.col2 < t2.col2
) p
group by pairs;