您的位置:首页 > 游戏 > 游戏 > 长春seo外包方案_网站推广的目的有哪些_seo价格查询公司_谷歌浏览器怎么下载

长春seo外包方案_网站推广的目的有哪些_seo价格查询公司_谷歌浏览器怎么下载

2025/4/22 2:33:58 来源:https://blog.csdn.net/Joyce_heart/article/details/147351995  浏览:    关键词:长春seo外包方案_网站推广的目的有哪些_seo价格查询公司_谷歌浏览器怎么下载
长春seo外包方案_网站推广的目的有哪些_seo价格查询公司_谷歌浏览器怎么下载

计算不连续数据区间天数并且剔除重复天数

create table loan_data(loan_no varchar(10),cust_no varchar(10),start_date date,end_date date
)INSERT INTO loan_data VALUES ('LN001', 'CUST001', '2025-01-04', '2025-01-08');
INSERT INTO loan_data VALUES ('LN002', 'CUST001', '2025-01-06', '2025-01-09');
INSERT INTO loan_data VALUES ('LN003', 'CUST001', '2025-01-09', '2025-01-10');
INSERT INTO loan_data VALUES ('LN004', 'CUST001', '2025-01-11', '2025-01-12');
INSERT INTO loan_data VALUES ('LN005', 'CUST001', '2025-01-14', '2025-01-16');
INSERT INTO loan_data VALUES ('LN005', 'CUST001', '2025-01-19', '2025-01-20');select * from loan_data;with date_with_max_end AS (SELECT cust_no,start_date,end_date,MAX(end_date) OVER (PARTITION BY cust_no ORDER BY start_date) AS max_end_dateFROM loan_data
),
date_with_gaps AS (SELECT cust_no,start_date,end_date,LAG(max_end_date) OVER (PARTITION BY cust_no ORDER BY start_date) AS prev_date,CASE WHEN start_date <= LAG(max_end_date) OVER (PARTITION BY cust_no ORDER BY start_date)THEN 0 --连续天数ELSE 1 --不连续开始新的区间END AS is_new_periodFROM date_with_max_end
),
-- 计算连续区间分组
date_groups AS (SELECT cust_no,start_date,end_date,SUM(is_new_period) OVER (PARTITION BY cust_no ORDER BY start_date) AS period_groupFROM date_with_gaps
),
-- 计算每个连续区间的统计信息
period_stats AS (SELECT cust_no,period_group,MIN(start_date) AS period_start,MAX(end_date) AS period_endFROM date_groupsGROUP BY cust_no, period_grouporder by period_group
)
-- 最终结果
SELECT cust_no,SUM(period_end-period_start+1) AS total_unique_days,MIN(period_start) AS overall_start_date,MAX(period_end) AS overall_end_date,-- 列出所有连续区间jsonb_agg(jsonb_build_object('period', period_start || '~' || period_end,'days', period_end-period_start+1)ORDER BY period_start) AS continuous_periods_detail
FROM period_stats
GROUP BY cust_no;--结果接
CUST001	14	2025-01-04	2025-01-20
---json_agg
[{"days": 7, "period": "2025-01-04~2025-01-10"}, 
{"days": 2, "period": "2025-01-11~2025-01-12"},
{"days": 3, "period": "2025-01-14~2025-01-16"}, 
{"days": 2, "period": "2025-01-19~2025-01-20"}]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com