SQL запрос, чтобы получить клиентов, которые приобрели продукт, приобретенный другими клиентами - PullRequest
1 голос
/ 01 мая 2020

У меня есть два заказа на сущность, и в заказе отдельной позиции фиксируется информация об идентификаторе заказа, идентификаторе клиента и деталях отгрузки. Информация о отдельной позиции будет содержать идентификатор заказа, заказанного продукта и количества.

Я хочу получить 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)

Этот запрос получает идентификатор и продукт покупателя. Кроме того, мне нужно отфильтровать только тех покупателей, которые приобрели продукт только тремя другими покупателями

1 Ответ

0 голосов
/ 01 мая 2020

Вы хотите продукты, приобретенные четырьмя или более покупателями. То есть:

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
                    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...