我有一个名为“交易”的表,其中包含以下列:Date
,ClientID
,Amount
。
我想在过去30天内有活跃的客户。
这样的事情:
Date | Active_Clients
2017/08/10 | 697
2017/08/11 | 710
2017/08/12 | 689
等
含义:从2017/08/10
减去30天到2017/08/10
我有697名活跃用户。
我尝试了许多方法并没有成功。
答案 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