我有一个这样的表:

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/

10-12 23:00