如何在给定的时间间隔内计算记录数?

csbfibhn  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(408)

我有一个创建了列的表。我需要检查是否至少有一个记录是在不到一分钟前创建的,来自具有相同用户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|

^不匹配,创建间隔超过一分钟。

svgewumm

svgewumm1#

你可以用 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 .
在db小提琴上演示。
样本数据:

created_at          | user_id
:------------------ | ------:
2020-01-01 22:22:22 |       1
2020-01-01 22:22:44 |       1
2020-01-01 22:22:22 |       2
2020-01-01 22:24:44 |       2

结果:

user_id | flag
------: | :---
      1 | t   
      2 | f

相关问题