我有一个与所购买产品的交易列表 - 我试图查看哪些项目经常一起购买。一笔交易可以购买 1 个项目或多个项目。
transaction_id | Product Name
1 | A
1 | B
1 | C
2 | A
3 | A
3 | B
我想得到:
AB: 2
AC: 1
BC: 1
有些事务甚至可以有 20 个项目。
我设法摆脱了只购买了 1 个产品的交易,我尝试通过transaction_id和连接产品名称进行分组,但这仍然不允许我计算对数。
您可以使用自联接和聚合:
select t1.product, t2.product, count(*)
from t t1 join
t t2
on t1.transaction_id = t2.transaction_id and
t1.product < t2.product
group by t1.product, t2.product;
注意:这假定行不重复。