You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL按属性、年月分组计算年内滚动累计聚合值(AVG等)实现求助

实现方案

直接使用标准窗口函数即可满足需求,参考SQL如下:

SELECT 
    field1,
    field2,
    year,
    month,
    kpi,
    AVG(kpi) OVER (
        PARTITION BY field1, field2, year 
        ORDER BY month ASC
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS kpi_yr_avg
FROM 你的表名;

逻辑说明

  • PARTITION BY field1, field2, year:按业务字段、年份分组,不同分组的计算完全独立,符合同field1、field2、同年度计算的要求
  • ORDER BY month ASC:分组内按月份从小到大排序,保证计算顺序是从1月往12月递进
  • ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW:指定窗口计算范围是当前分组的第一行到当前行,也就是对应年份的1月到当前记录的月份,刚好匹配累计平均规则

如果你的数据集存在月份缺失的情况,建议先生成完整的年月维度表,和业务表左关联补全空缺月份的kpi值后再执行以上计算,避免缺月导致累计范围不符合预期。

内容的提问来源于stack exchange,提问作者FrankBlack78

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:24:03