我有一个名为Actions
的表。
每个操作都有一个user_id
,created_at
和其他一些字段。
我想运行一个sql查询,在该查询中我抓取过去5天内针对每个用户的所有操作以及5天内的第一个操作。
例如: -如果用户在过去5天中没有任何操作,则我不希望该用户退回任何东西。 -如果一个用户在5天之内有1个操作,而另外3个用户有3个操作,则我希望为该用户返回2个操作。 5天之内的一个,其次是其他3天中的最新的。
我无法确定如何编写此SQL查询。这只能是查询,没有过程,也没有应用程序级逻辑。
我如何实现我想要做的事情?
上下文:基本上,如果我运行此报告,则可以看到谁在我的网站上执行操作,并查看他们先前的操作是什么,以及该先前的操作是什么时候。
答案 0 :(得分:0)
我想你想要
select a.*
from (select a.*, lead(created_at) over (partition by user_id order by created_at) as next_created_at
from actions a
) a
where created_at >= now() - interval '5 day' or
next_created_at >= now() - interval '5 day';