SQL查询以获取购买其他客户购买的产品的客户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询以获取购买其他客户购买的产品的客户相关的知识,希望对你有一定的参考价值。

我有两个实体订单和订单项订单捕获订单ID,客户ID和运输详细信息订单项详细信息将捕获订单ID,订购的产品和数量。

我想获得与他购买了相同产品的customer_id也被另外三个客户购买。

select corder.customer_id,lineitem.prod_id
from lineitem
join corder on corder.order_id=lineitem.order_id
where prod_id in(select prod_id from lineitem
group by prod_id
having count(prod_id)>2)

此查询获取客户ID和产品,我还需要仅过滤仅由其他三个客户购买产品的客户

答案

您想让四个客户购买产品。那是:

select li.prod_id
from lineitem li join
     corder o
     on li.order_id = o.order_id
group by li.prod_id
having count(distinct o.customer_id) >= 4;

现在,您要购买这些产品的客户。因此:

select distinct c.customer_id
from corder co join
     lineitem li
     on li.order_id = o.order_id
where li.prod_id in (select li.prod_id
                     from lineitem li join
                          corder o
                          on li.order_id = o.order_id
                     group by li.prod_id
                     having count(distinct o.customer_id) >= 4
                    );

以上是关于SQL查询以获取购买其他客户购买的产品的客户的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 如何找到从每个商店购买产品的客户?

SQL 按最初购买的产品列出其他购买的产品并计算买家

用于查找重叠客户的 SQL 子查询

SQL:如何查询我注册6个月后购买的客户?

递归跟踪购买月份的 SQL 查询

使用解析函数查询同类产品