我在postgres中有一个文本数组字段,我们可以称之为items
。我想创建一个查询,它将告诉我这些项中的每一项彼此同时出现的次数。
对于行的示例集:
items
-----
{'a', 'c'}
{'a', 'b', 'c'}
{'a', 'c'}
{'a', 'b', 'c'}
字符串
以下是使用:
分隔项目名称和同现次数的示例输出:
item|co_occurrences
-------------------
a |{c:4,b:2}
b |{a:2,c:2}
c |{a:4,b:2}
型item
列列出各个项目。co_occurences
列是一个文本元素数组,它组合了共现项和计数。什么查询将产生此结果?
2条答案
按热度按时间uxhixvfz1#
我没有像@MikeOrganek那样为自连接生成行id,而是只需要
unnest
两次就可以生成一个具有重复元组的关系:字符串
(online demo)
zzwlnbp82#
首先将其转换为正常的关系形式。
以下代码为任意行
id
赋值:字符串
工作fiddle
如果目标不一定是JSON,那么我们可以构造一个字符串。这允许对字符串中的值进行排序:
型
更新fiddle