【问题标题】:Calculate Weekly Snapshot From Change Events in SQL or Tableau从 SQL 或 Tableau 中的更改事件计算每周快照
【发布时间】:2016-06-17 13:00:48
【问题描述】:

当记录的字段发生更改时,我有一个记录的快照表,如下所示:

       name         |    created_date     |       value
--------------------+---------------------+----------------------
                  a | 2016-01-01 21:36:48 | 300
                  a | 2016-01-20 17:58:00 | 400
                  b | 2016-01-06 17:58:00 | 100
                  b | 2016-01-27 17:58:00 | 300
                  c | 2016-03-03 17:58:00 | 500

我如何使用此数据获取任何一个名称的最新行,每周获取最新值的总和。

例如

Week 1 (1/3) - 300 (a)
Week 2 (1/10) - 400 (a+b)
Week 3 (1/17) - 400 (a+b)
Week 4 (1/24) - 500 (a'+b)
Week 5 (1/31) - 700 (a+b')
Week 6 (2/7) - 700 (a+b)
Week 8 (2/14) - 700 (a+b)
...
Week 11 (3/7) - 1200 (a+b+c)

如果我可以创建一个表格,其中的一行按周显示每条记录的最新条目,那么我可以计算每周的总和,但我不确定如何创建这样的表格。

【问题讨论】:

  • 在 best-n-per-group 标签中寻找答案。

标签: sql postgresql salesforce greatest-n-per-group amazon-redshift


【解决方案1】:

这个 (SQLFiddle) 应该可以满足您的需求。

周(在本例中)从 1 月 3 日开始,从周日到周六。有一个例子是一周内多个名字以及多个一个名字出现多次。

【讨论】:

  • 我认为这个答案几乎就在那里,但我希望每周显示每个唯一名称的最新值的总和。即 1 月 10 日应该是 600,因为最新的“a”是 300,最新的“b”是 300。
  • 它已经这样做了......(在提到的 SQL Fiddle 中),1 月 10 日显示最新,1 月 17 日给出了总和。 (请注意,SQLFiddle 示例值不是问题中的值)
  • 更新了 SQLFiddle URL 以提供更好的值以表明它按预期工作(1 月 17 日现在 a 和 b 都有多个值,并且仍然只汇总最新值)
  • 另外,1 月 10 日(在示例中)表示 1 月 10 日 - 1 月 16 日
  • 啊,我觉得有误会。我每周都在寻找从那周结束一直到第一次约会的总和,例如在这种情况下为 1/4。 1 月 3 日 (-1/9) 的总和是正确的,因为在 1/4 上,“a”的值为 300。1 月 17 日 (-1/23) 的总和是正确的,因为“a”有1/21 的值为 300,而“b”在 1/21 的值为 200。但是,1 月 10 日 (*-1/16) 的总和不正确,因为 'a' 在 1/4 的值为 300,而 'b' 在 1/14 的值为 300。但是,我只是将第 11 行中的 w 更改为 '2016/1/1'::TIMESTAMP!现在,是时候尝试在 Redshift 中实现它了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多