首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隔离值变为0的日期,并将另一个值与该日期相加。

隔离值变为0的日期,并将另一个值与该日期相加。
EN

Stack Overflow用户
提问于 2016-07-06 05:02:36
回答 2查看 29关注 0票数 2

我想看到两件事:

  1. 当客户关闭他们在我们的所有帐户时(账户转到0的日期)
  2. 在此之前,客户与我们之间的总交互(从帐户数大于1开始的交互之和)。

在此之前,客户与我们之间的总交互(从帐户数大于1开始的交互之和)。

基本上,我试着在附图中从上表到下表。

代码语言:javascript
复制
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  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-06 05:20:10

当我第一次读到这个问题的时候,听起来好像有一个很好的窗口函数解决方案,但是在重新阅读之后,我认为这是不必要的。假设关闭他的最后一个帐户将是客户与您进行的最后一次交互,您只需要每个客户的最后一个交互日期,这意味着这个问题可以通过简单的聚合函数来解决:

代码语言:javascript
复制
SELECT   customer, MAX(month), SUM(interactions)
FROM     mytable
GROUP BY customer
票数 0
EN

Stack Overflow用户

发布于 2016-07-06 11:35:17

为了获得最后三个月的数据,您需要一个OLAP功能:

代码语言:javascript
复制
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 customer
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38216607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档