Я думаю, что вы ищете какую-то линейную регрессию.
Идея состоит в том, чтобы оценить, сколько конфет было потреблено в течение года, предшествующего school_start_date
, путем вычисления количества дней перекрытия между этим периодом и диапазоном дат, определенным purchase_date
и consumed_date
из конфеты. На основе коэффициента перекрытия вы можете спрогнозировать потребление в течение периода ретроспективного анализа.
Это должно делать то, что вы хотите:
select
t.*,
number_of_candies *
greatest(
least(school_start_date, consumed_date)
- greatest(purchase_date, add_months(school_start_date, -12)),
0
) / (consumed_date - purchase_date) candies_consumed_during_loopback
from mytable t
Демо на DB Fiddle :
ID | PURCHASE_DATE | NUMBER_OF_CANDIES | CONSUMED_DATE | SCHOOL_START_DATE | RES
-: | :------------ | ----------------: | :------------ | :---------------- | --:
1 | 30-DEC-09 | 15 | 14-JAN-10 | 01-JAN-11 | 13
1 | 30-MAY-10 | 30 | 29-JUN-10 | 01-JAN-11 | 30
2 | 01-NOV-10 | 90 | 30-JAN-11 | 01-JAN-11 | 61
2 | 09-AUG-12 | 15 | 24-AUG-12 | 01-JAN-11 | 0
3 | 01-DEC-14 | 900 | 19-MAY-17 | 01-JAN-16 | 365