目录
0 场景描述
1 数据准备
2 问题分析
方法1:分情况讨论,找出重叠区间
方法2:暴力美学法。按区间展开成日期明细表
3 小结
0 场景描述
现有用户还款计划表 user_repayment ,该表内的一条数据,表示用户在指定日期区间内 [date_start, date_end] ,每天还款 repayment 元。
如何统计任意时段内(如:2024-01-15至2024-01-16)每天所有用户的应还款总额?
1 数据准备
with user_repayment as (
select stack(
3,
'101', '2024-01-01', '2024-01-15', 10,
'102', '2024-01-05', '2024-01-20', 20,
'103', '2024-01-10', '2024-01-25', 30
)
-- 字段:用户,开始日期,结束日期,每日还款金额
as (user_id, date_start, date_end, repayment)
)
select * from user_repayment;