我有一个带有created列的表。我需要检查是否有至少一个记录是在不到一分钟前从具有相同user_id的最后一条记录创建的。例如:
| created|user_id|
|2020-01-01T22:22:22| 1|
|2020-01-01T22:22:44| 1|
^匹配我的子句。每隔一分钟创建一次。
| created|user_id|
|2020-01-01T22:22:22| 1|
|2020-01-01T22:24:44| 1|
^不匹配,创建间隔超过一分钟。
您可以使用distinct on
和窗口功能:
select distinct on (user_id)
user_id,
created_at
<= lag(created_at) over(partition by user_id order by created_at) + interval '1' minute as flag
from mytable
order by user_id, created_at desc
[这给您每个user_id
记录,带有一个称为flag
的布尔列,它指示最后一个created_at
是否比最新的created_at
大一分钟或更短。
样本数据:
created_at |用户身份:------------------ | ------:2020-01-01 22:22:22 | 1个2020-01-01 22:22:44 | 1个2020-01-01 22:22:22 | 22020-01-01 22:24:44 | 2
结果:
user_id |旗------:| :- 1 | Ť 2 | F