我们有一个用户活动表。每个活动都由用户 ID、时间戳和活动 ID 记录。每天用户的每个活动ID 可以有多行。
我们要做的是获取用户在过去 X 天内最后一次执行特定活动的时间,例如以下示例:
userID timestamp activityID
3241 10/14/2017 7:17 2
3241 10/15/2017 8:17 2
3241 10/16/2017 8:17 2
4355 10/15/2017 8:17 2
4355 10/16/2017 8:17 2
4355 10/17/2017 8:17 2
1234 10/15/2017 8:17 2
2236 10/15/2017 8:17 2
2236 10/16/2017 8:17 2
2002 10/17/2017 8:17 2
我可以提取用户 ID 执行的最后一次活动,但不能提取过去 X 天内的每一天:
select t1.[userID],
t2.[mxdate]
from TableA t1
inner join
(
select max([timestamp]) AS mxdate,
[userID]
from TableA
where activityType = 2
group by [userID]
) t2
on t1.[userID] = t2.[userID]
and t1.[timestamp] = t2.mxdate
我一直在尝试各种方法来按时间戳的日期部分分组,但到目前为止还没有成功。我不断获得每一个活动和时间戳。
我是否至少朝着正确的方向前进?如果是这样,我错过了什么/条款?
提前感谢您的任何帮助!