Допустим, есть набор данных о клиентах и товарах.Для моего анализа я хочу оставить только клиентов, которые купили как минимум N разных товаров, и только те товары, которые были куплены как минимум М. разными клиентами.
Каждый раз, когда я фильтрую один из наборов (клиентов или товары)) Я должен фильтровать другой тоже.Когда я удаляю клиента, один из элементов может опуститься ниже M разных клиентов и наоборот.
Это приводит к итеративному процессу фильтрации: фильтруйте клиентов, фильтруйте элементы, фильтруйте клиентов, ... Я должен повторитьдо конвергенции.
Я сжал два фильтра в один SQL-запрос, но он все равно должен выполняться много раз.Этот следующий код будет первым выполненным запросом, когда в следующий раз я выберу из transactions_filtered_1
и создам новую таблицу transactions_filtered_2
create table transactions_filtered_1 as
select t.* from transactions as t
where (select count(distinct customer_id) from transactions where item_id== t.item_id) > 50
and (select count(distinct item_id) from log where customer_id== t.customer_id) > 50;
Можно ли каким-то образом сжать итерационный процесс в один запрос?Мой sql диалект - sqlite, но я бы также заинтересовался решениями из других диалектов.