SQL:在一个时间范围内滚动计数

时间:2017-05-26 10:58:30

标签: sql oracle range analytical

我需要在过去3个月内找到一个活跃客户的数量。 所以我进入我的交易表,找出在3个月内购买东西的客户。但我想用分析函数来实现它。

 driver.switchTo().frames("Frame 1");

输出是这样的:

 //Come to root from Frame 1
 driver.switchTo().defaultContent();

 //Now switch to Frame 2
 driver.switchTo().frames("Frame 2");

这表明在20170101年,我们在20160930和20170101(过去3个月)之间有10个客户活跃......等等。

1 个答案:

答案 0 :(得分:0)

恕我直言,分析函数在这里使用不正确,因为a)看起来你是在每个时期的计数之后,没有显示所有行并显示客户的滚动数量而b)你的trx_table可能不包含所有日期。

相反,我会这样做:

SELECT   add_months(dd.dt, -3) date_from,
         dd.dt date_to,
         COUNT(DISTINCT customerid) cnt
FROM     dim_date dd
         INNER JOIN trx_table tt ON tt.trx_date BETWEEN add_months(dd.dt, -3) AND dd.dt)
GROUP BY add_months(dd.dt, -3),
         dd.dt;