PostgreSQL如何关联两张表并计算review_date前12个月的cost总和
PostgreSQL 关联表计算回溯12个月消费总额方案
核心逻辑
- 以B表的每一条记录为基准,关联同一客户ID的A表消费记录
- 关联时增加时间范围过滤:消费时间需处于「评审日期往前推12个月」到「评审日期」的左闭右开区间内
- 按B表的评审日期、客户等级分组后聚合计算消费总额即可
实现SQL
SELECT b.review_date, b.customer_level, SUM(a.cost) AS "12 month cost at review" FROM b LEFT JOIN a ON b.customer_id = a.customer_id AND a.receipt_timestamp >= b.review_date - INTERVAL '12 months' AND a.receipt_timestamp < b.review_date GROUP BY b.customer_id, b.review_date, b.customer_level ORDER BY b.review_date;
结果说明
执行上述SQL后输出结果与需求预期完全一致:
| review_date | customer_level | 12 month cost at review |
|---|---|---|
| 2018-01-15 | 1 | 381.00 |
| 2019-01-15 | 0 | 45.00 |
| 2020-10-15 | 1 | 339.00 |
如果需要处理无消费记录时返回0而非NULL,可将聚合部分改为COALESCE(SUM(a.cost), 0)即可。
内容的提问来源于stack exchange,提问作者GogoingDE
相关产品推荐
相关产品推荐

