## Контекст (таблицы и пример данных) ### Таблицы - `customers(id, name)` - `orders(id, customer_id

SQL Developer Senior
## Контекст (таблицы и пример данных) ### Таблицы - `customers(id, name)` - `orders(id, customer_id)` - `order_items(order_id, product_id)` ### Пример данных **customers** | id | name | |---:|------| | 1 | A | | 2 | B | **orders** | id | customer_id | |----:|------------:| | 10 | 1 | | 11 | 1 | | 20 | 2 | **order_items** | order_id | product_id | |---------:|-----------:| | 10 | 101 | | 11 | 102 | | 20 | 101 | --- ## Задача Есть целевой набор товаров: `{101, 102}`. Найти клиентов, которые купили **все** товары из набора (в любых заказах). Вернуть: `customer_id`, `name`.
Ответы
```sql WITH target(product_id) AS ( VALUES (101), (102) ), cust_products AS ( SELECT DISTINCT o.customer_id, oi.product_id FROM orders o JOIN order_items oi ON oi.order_id = o.id ) SELECT c.id, c.name FROM customers c WHERE NOT EXISTS ( SELECT 1 FROM target t WHERE NOT EXISTS ( SELECT 1 FROM cust_products cp WHERE cp.customer_id = c.id AND cp.product_id = t.product_id ) ); ```