我想看到两件事:
在此之前,客户与我们之间的总交互(从帐户数大于1开始的交互之和)。
基本上,我试着在附图中从上表到下表。
Customer month Accounts Interactions
12345 Jan-15 3 5
12345 Feb-15 3 1
12345 Mar-15 2 7
12345 Apr-15 1 3
12345 May-15 1 9
12345 Jun-15 1 2
12345 Jul-15 0 3
67890 Feb-15 1 4
67890 Mar-15 1 4
67890 Apr-15 1 9
67890 May-15 0 5
Customer Month close date Interactions
12345 Jul-15 30
67890 May-15 23 发布于 2016-07-06 05:20:10
当我第一次读到这个问题的时候,听起来好像有一个很好的窗口函数解决方案,但是在重新阅读之后,我认为这是不必要的。假设关闭他的最后一个帐户将是客户与您进行的最后一次交互,您只需要每个客户的最后一个交互日期,这意味着这个问题可以通过简单的聚合函数来解决:
SELECT customer, MAX(month), SUM(interactions)
FROM mytable
GROUP BY customer发布于 2016-07-06 11:35:17
为了获得最后三个月的数据,您需要一个OLAP功能:
SELECT Customer, MAX(months), SUM(Interactions)
FROM
(
SELECT Customer, month, Interactions
FROM mytable
QUALIFY
-- only closed accounts
MIN(Accounts) OVER (PARTITION BY Customer) = 0
-- last three months
AND month >= oADD_MONTHS(MAX(month) OVER (PARTITION BY Customer), -3)
) AS dt
GROUP BY customerhttps://stackoverflow.com/questions/38216607
复制相似问题