是否可以选择在SQL中的级联单词列表中计算单词对



我有一个与所购买产品的交易列表 - 我试图查看哪些项目经常一起购买。一笔交易可以购买 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;

注意:这假定行不重复。

最新更新