客户对购买模式3个或更多相同商品数量

时间:2019-11-21 10:57:27

标签: sql

我试图找到同时购买3个或更多相同产品的客户对,并计算他们这样做的次数。

例如:对于一对客户对1-2,突出显示为1:

enter image description here

我很确定我必须使用自连接,但是我不知道如何计算它们。

数据库: tables

这就是我要寻找的: result

1 个答案:

答案 0 :(得分:0)

我想我明白了。您似乎希望客户在同一天订购了相同的三种产品。下面将获取每个日期三个项目的所有组合,然后进行比较以获取您要查找的对:

with o3 as (
     select o1.customer_id, o1.order_date,
            o1.product_id as product_id_1,
            o2.product_id as product_id_2,
            o3.product_id as product_id_3
     from orders o1 join
          orders o2
          on o1.order_date = o2.order_date and
             o1.customer_id = o2.customer_id and
             o1.product_id < o2.product_id join
          orders o3
          on o2.order_date = o3.order_date and
             o2.customer_id = o3.customer_id and
             o2.product_id < o3.product_id
    )
select o3.customer_id, o3_2.*
from o3 join
     o3 o3_2
     on o3_2.order_date = o3.order_date and
        o3_2.product_id_1 = o3.product_id_1 and
        o3_2.product_id_2 = o3.product_id_2 and
        o3_2.product_id_3 = o3.product_id_3 and
        o3_2.customer_id > o3.custer_id;