计算前期总计,不包括回顾之前和参考年份之后的计数
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_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
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
假设一个学生每天只吃一颗糖。我需要找出一个学生在开学前消耗了多少糖果(如"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_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
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