我有一个看起来像这样的表:
Conversion_Date User_Name Last_Date_Touch Touch_Count
7/15/2017 A 6/17/2017 1
7/16/2017 B 6/24/2017 2
7/19/2017 A 6/20/2017 1
7/19/2017 C 6/29/2017 1
我想得到总和Touch_Count
从过去 30 天开始Conversion_Date
by User_Name
在 SQL 中。
一开始我唯一能想到的就是计算出 30 天前每个转换日期的时间窗口,然后我不确定如何汇总它以获得最终结果。
首先,它添加了以下 30 天的窗口:
Conversion_Date User_Name Last_Date_Touch Touch_Count 30_Days_Ago
7/15/2017 A 6/17/2017 1 6/15/2017
7/16/2017 B 6/24/2017 2 6/16/2017
7/19/2017 A 6/20/2017 1 6/19/2017
7/19/2017 C 6/29/2017 1 6/19/2017
然后我需要聚合它,使其看起来像这样:
Conversion_Date User_Name Last_Date_Touch Touch_Count SUM(Last30daysbyconversiondate)
7/15/2017 A 6/17/2017 1 5
7/16/2017 B 6/24/2017 2 5
7/19/2017 A 6/20/2017 1 4
7/19/2017 C 6/29/2017 1 4
最后两行为 4,因为 2017 年 6 月 17 日的 last_date_touch 值不在 2017 年 7 月 19 日的 30 天窗口内,因此排除了 touch_count,在本例中最后两行的总计数为 4。
如果您知道如何在 SQL 中执行此操作,那么任何帮助都会很棒。
Thanks!
这应该可以通过自连接获得
select
a.User_Name
,a.Conversion_Date
,sum(b.Touch_Count) as SumOver30Days
from
SomeTable a
left join
SomeTable b on
b.User_Name = a.User_name
--and b.Conversion_Date <= a.Conversion_Date
--and b.Conversion_Date >= dateadd(day,-30,a.Conversion_Date)
and cast(b.Conversion_Date as date) <= cast(a.Conversion_Date as date)
and cast(b.Conversion_Date as date) >= cast(dateadd(day,-30,a.Conversion_Date) as date)
group by a.User_Name, a.Conversion_Date
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)