我有一个这样的表:
col1 col2
id1 item1
id1 item2
id1 item3
id2 item1
id2 item4
id3 item2
id3 item3
我必须在此表上运行查询,以查找每对
items
共享一个共同的id
的次数。例如,在上述情况下,对(item1, item2)
具有1
的计数(只有id1同时具有item1和item2)。同样,对(item2, item3)
的计数为2
(id1,id3)。我可以编写代码来实现此目的,但是我无法提供sql查询。帮我编写一个有效的查询以输出以下内容:
col1 col2 count
item1 item2 1
item1 item3 1
item1 item4 1
item2 item3 2
谢谢
最佳答案
select t1.col2 as item_A
,t2.col2 as item_B
,count(*) as cnt
from mytable t1
join mytable t2
on t1.col1 = t2.col1
where t1.col2 < t2.col2
group by t1.col2
,t2.col2
+--------+--------+-----+
| item_a | item_b | cnt |
+--------+--------+-----+
| item1 | item2 | 1 |
| item1 | item3 | 1 |
| item1 | item4 | 1 |
| item2 | item3 | 2 |
+--------+--------+-----+
关于sql - SQL查询: co-occurrence of column values,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43322202/