Sql-计算从date-30days到当前寄存器日期的不同值

时间:2017-08-18 12:58:23

标签: sql

我有一个名为“交易”的表,其中包含以下列:DateClientIDAmount

我想在过去30天内有活跃的客户。

这样的事情:

Date        |    Active_Clients
2017/08/10  |      697
2017/08/11  |      710
2017/08/12  |      689

含义:从2017/08/10减去30天到2017/08/10我有697名活跃用户。

我尝试了许多方法并没有成功。

3 个答案:

答案 0 :(得分:1)

一种方法看起来像这样:

select d.dte, count(distinct t.clientid)
from (select '2017-08-10' as dte union all
      select '2017-08-11' as dte union all
      select '2017-08-12' as dte 
     ) d left join
     transactions t
     on t.date <= d.dte and t.date > d.dte - interval '30' day
group by d.dte
order by d.dte;

日期常量,日期算术和具有常量值的子查询的确切语法因数据库而异。

答案 1 :(得分:0)

您可以尝试以下代码:

select distinct [Date]
, (select  count(distinct B.clientid) from  Transactions B 
    where b.Date between DATEADD(day,-30,a.Date) and A.Date) Active_Clients
from Transactions A

答案 2 :(得分:0)

谢谢你们的帮助。

我想我找到了@gordonlinoff回答的答案。

选择不同的数据 ,(从appvitaminas..transacoes B中选择计数(不同的id_cliente)     其中b.DATEADD(day,-30,a.Data)和A.Data之间的数据.Active_Clients 来自appvitaminas..transacoes A