更新oracle中的每周事实,不带日期



我正在处理一个项目,在该项目中,我必须创建一个仅包含最近7天聚合值的表。目标表的结构为:

customer_id,distinct_products
1, 20
2, 5
3, 0
4, 2
5, 3

现在将上述值视为截至今天的值2016年1月12日,这意味着基于(2016年1月5日至2016年1日12日)的汇总

现在,明天当我必须更新此表时,它应该包含根据2016年1月6日的数据汇总的值至2016年1月13日

问题是,我不能每天重新聚合所有7天,因为每天都包含数百万行。

我使用的是Oracle 11g。

我认为以下逻辑应该能在中工作

  1. 当天取合计
  2. 将其添加到当前周的目标/汇总表中的现有编号中
  3. 将步骤2的结果除以一周中的当前日期,范围为1-7,并用结果更新汇总表

然后,汇总表会有你一周的"跑步"平均值,你只需要汇总当前一天,这是无论如何都需要的。

希望这个逻辑有帮助。。

我发现以下步骤非常快速准确:

1-处理1天(每天第1天)的数据创建一个聚合表customer_id,date,prod_id,我称之为Stage_Agg。每天添加1天数据并删除1天数据,即>Day-7

2-处理Stage_Agg以生成名为Stage_Agg7的第二个聚合表,这将生成表customer_id,distinct_prod_count7

3-更新事实表,你就可以

让我知道你们的想法。

最新更新