Вычислять значения за предыдущие 3 недели динамически для каждой недели в году - PullRequest
1 голос
/ 29 января 2020

Я ищу способ найти qty_sold для каждого товара за предыдущие 3 недели для каждой недели в году и классифицировать как "высокий", если в * 1003 продано более 20 товаров. любая из 2 предыдущих недель

, открытая для sql и python. Любая помощь приветствуется.

Например, в приведенных ниже данных qty_sold для яблока, скажем, за 51 неделю, qty_sold> 20 за любую из 2 недель в предыдущие 3 недели, то есть 50-й, 49-й и 48-й недель , что составляет 143, 111 и 18 соответственно, он классифицируется как высокий.

enter image description here

Мой окончательный вывод выглядит следующим образом:

enter image description here

Выделенные строки содержат достаточно данных в примере

Спасибо

1 Ответ

1 голос
/ 29 января 2020

классифицируется как "высокий", если в течение любой из 2 предыдущих недель было продано более 20 товаров

Я не уверен, что это именно логика c, но все, что вы хотите сделать, вы можете использовать оконные функции:

select t.*,
       (case when (lag(qty_sold, 1, 0) over (partition by item order by weeknum rows) > 20)::int +
                  (lag(qty_sold, 2, 0) over (partition by item order by weeknum rows) > 20)::int +
                  (lag(qty_sold, 3, 0) over (partition by item order by weeknum rows) > 20)::int >= 2                      
             then 'high' else 'low'
        end) as frequency
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...