计算前期总计,不包括回顾之前和参考年份之后的计数

Calculating totals for pre period excluding counts prior to lookback and after reference year

假设一个学生每天只吃一颗糖。我需要找出一个学生在开学前消耗了多少糖果(如"Total_candies_consumed_one_year_before_start_of_school"栏中红色字体所示)。我的数据如table中黑色字体所示。我计算了突出显示的列。我已经提供了如何计算 "Total_candies_consumed_one_year_before_start_of_school" 的基本原理。

我不知道如何排除发生在“1_year_lookback_period”之前和 "school start date" 之后的计数。

非常感谢任何帮助。

我认为您正在寻找某种线性回归。

我们的想法是通过计算这一时期与 purchase_dateconsumed_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

Demo on 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