我正在使用 Postgres,我想找到丢失的日期范围。我有这张包含这些数据的表格:
create table event_dates
(
date date
);
INSERT INTO event_dates (date) VALUES ('2024-12-09');
INSERT INTO event_dates (date) VALUES ('2024-12-13');
INSERT INTO event_dates (date) VALUES ('2024-12-20');
我想找到任意范围内缺失周期的数量。例如, 在 2024-12-05 和 2024-12-25 之间我希望结果是
4
,因为:
我无法让它与ant窗口功能一起工作。
有什么线索吗?
谢谢,
参见示例
日期 |
---|
2024-12-09 |
2024-12-13 |
2024-12-20 |
select min(date) min_date,max(date) max_date
,sum(isGap) countGaps
from(
select *
,case when lead(date,1,date)over(order by date)=date then 0 else 1 end isGap
from(
select date
from event_dates
where date between '2024-12-05' and '2024-12-25'
union all
select '2024-12-05'::date date
union all
select '2024-12-25'::date
) a
)b
最小日期 | 最大日期 | 计算间隙 |
---|---|---|
2024-12-05 | 2024-12-25 | 4 |