有一个包含字段的“压力”表:
id - integer value - integer created_at - timestamp
是否可以确定在没有创建记录的情况下,是否存在一个连续超过4天的窗口。也就是说,如果时间段是连续4天,则没有记录。有很多记录。但通常记录创建的中断不超过1 - 2天。
ctehm74n1#
Postgres允许减去日期/时间戳,其结果为interval。然后将该结果与感兴趣的特定间隔进行比较。lag()函数提供对前一行的访问,从而访问前一个created_at值。因此:(参见demo)
created_at
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';
1条答案
按热度按时间ctehm74n1#
Postgres允许减去日期/时间戳,其结果为interval。然后将该结果与感兴趣的特定间隔进行比较。lag()函数提供对前一行的访问,从而访问前一个
created_at
值。因此:(参见demo)