Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查找与列关联最密切的其他行_Sql_Database_Postgresql - Fatal编程技术网

Sql 查找与列关联最密切的其他行

Sql 查找与列关联最密切的其他行,sql,database,postgresql,Sql,Database,Postgresql,对不起,我不知道该如何表达这个问题 我有一个包含两列的表:tag和activity\u id,用于跟踪活动和标记之间的多对多关系。(事实上,tag实际上是一个数字tag\u id,但出于问题的目的,我将对其进行简化-我可以在以后找出连接。) 样本数据: tag, activity_id "Ideation",52698 "Adult",52698 "Trans man",52698 "USA - Northwest",52698 "Transfeminine",52699 "Ideation",

对不起,我不知道该如何表达这个问题

我有一个包含两列的表:
tag
activity\u id
,用于跟踪活动和标记之间的多对多关系。(事实上,tag实际上是一个数字
tag\u id
,但出于问题的目的,我将对其进行简化-我可以在以后找出连接。)

样本数据:

tag, activity_id
"Ideation",52698
"Adult",52698
"Trans man",52698
"USA - Northwest",52698
"Transfeminine",52699
"Ideation",52699
"Adult",52702
"Trans man",52702
"USA - Northwest",52702
"Ideation",52702
"PTSD",52702
"Religious abuse / trauma",52702
"Adult",52709
"Ideation",52709
我想找到的是哪些标签最容易与其他标签一起出现。例如,在上述情况下,意念和成人多次出现在同一活动中。意念和变性人也同时出现。我想要的是一个查询,以显示哪些标记根据活动id聚集在一起,理想情况下,根据它们出现在一起的次数进行某种排序


感谢您的帮助-如果我没有解释清楚,请发表评论

我认为您需要一个自连接和聚合:

select s1.tag, s2.tag, count(*)
from sample s1 join
     sample s2
     on s1.activity_id = s2.activity_id and s1.tag < s2.tag
group by s1.tag, s2.tag
order by count(*) desc;
选择s1.tag、s2.tag、count(*)
从样本s1连接
样本s2
在s1.activity_id=s2.activity_id和s1.tag
这太棒了,谢谢。这正是我需要的。下面是我使用的完整查询,上面省略了连接以简化示例:
SELECT t1.tag、t2.tag、s1.tag\u id、s2.tag\u id、count(*)从activities_tags s1加入s1上的activities_tags s2.activity_id=s2.activity_id和s1.tag_id