在没有日期的情况下更新oracle的每周事实

时间:2016-01-11 22:09:55

标签: oracle plsql aggregate

我正在开发一个项目,我必须在其中创建一个仅包含最近7天聚合值的表。目标表的结构是:

customer_id,distinct_products

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

现在考虑以上为 2016年1月12日的价值,意味着汇总为(2016年1月5日至2016年1月12日)

现在明天,当我必须更新此表时,它应该包含基于来自 06-JAN-2016的数据汇总的值 至2016年1月13日

问题是我每天都无法重新聚合所有7天,因为每天都有数百万行。

我正在使用Oracle 11g。

2 个答案:

答案 0 :(得分:0)

我认为以下逻辑应该有效

  1. 当天采取汇总
  2. 将其添加到当前周的目标/聚合表中的现有数字
  3. 将步骤2的结果除以当前的星期几,范围为1-7,并使用结果更新汇总表
  4. 汇总表将使您的"运行"本周的平均值,您只需要汇总当前所需的当天。

    希望这个逻辑有帮助..

答案 1 :(得分:0)

按照以下步骤,我发现工作非常快速和准确:

  

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

     

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

     

3 - 更新事实表,你没事了

让我知道你们的想法。