У меня есть база данных в postgresql с product_id, store_id, week, price_avg, price_min, price_max
, и я хочу выбрать набор однородных продуктов, который присутствует в ряде магазинов и в те же недели.
Я пробовал некоторые подходы, ноэто трудно, так как у меня 22 миллиона цен, 2645 различных магазинов и данных за 13 недель.
Цель - выбрать набор из 20 product_ids, которые присутствуют во всех 13 неделяхинформации и того, что они появляются в наборе из 10 магазинов все время.
Сначала я подумал о разделении базы данных по таблицам на магазин, а затем выполнить внутреннее соединение с product_id.Но это дорого для SQL.
Во-вторых, я взял первые две недели в таблице.и я запускаю
select
count() as quantity, f2.product, f2.key_all_stores
from
database f2
group by
product_id, key_all_stores
having
count() = 2
Счетчик 2 сохраняет эти продукты в течение обеих недель.и затем с выбранными продуктами я запускаю следующее:
select
count(), product_id
from
(select
count() as quantity, f2.product_id, f2.clave_todo_junto
from
fer f2
group by
producto, key_all_stores
having
count() = 2) as subquery
group by
subquery.product_id
having
count() = 4
Проблема с этими двумя запросами состоит в том, что я смотрю на две недели и делаю выборку с 4 различными магазинами.