确定Postgresql上的表中4天内未创建任何记录

3b6akqbq  于 2023-03-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(112)

有一个包含字段的“压力”表:

id - integer
value - integer
created_at - timestamp

是否可以确定在没有创建记录的情况下,是否存在一个连续超过4天的窗口。也就是说,如果时间段是连续4天,则没有记录。有很多记录。但通常记录创建的中断不超过1 - 2天。

ctehm74n

ctehm74n1#

Postgres允许减去日期/时间戳,其结果为interval。然后将该结果与感兴趣的特定间隔进行比较。lag()函数提供对前一行的访问,从而访问前一个created_at值。因此:(参见demo

select sq.* 
  from (select p.*
             , lag(p.created_at) over(order by p.created_at) previous_date
             , p.created_at - lag(p.created_at) over(order by p.created_at) days_between
        from pressure p
       ) sq
 where sq.days_between > interval '4 days';

相关问题