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

按周计算DeltaQty累计值并求解CumulativeAvailQty的SQL问题

解决方案:计算库存周度累计可用量

要实现按InventoryID分组、按周累计DeltaQty并计算CumulativeAvailQty,不能用LAG函数(它仅能获取单一行的前序值,无法实现累加),正确的做法是使用SUM窗口函数来实现累计求和。

核心SQL语句

SELECT
    InventoryID,
    WeekEndDate,
    AvailableQty,
    DeltaQty,
    -- 计算当前及之前所有周的DeltaQty累计值
    SUM(DeltaQty) OVER (
        PARTITION BY InventoryID 
        ORDER BY WeekEndDate 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS CumulativeDeltaQty,
    -- 累计Delta值加当期可用量得到累计可用量
    AvailableQty + SUM(DeltaQty) OVER (
        PARTITION BY InventoryID 
        ORDER BY WeekEndDate 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS CumulativeAvailQty
FROM InventoryWeekly
ORDER BY InventoryID, WeekEndDate;

关键逻辑说明

  • PARTITION BY InventoryID:确保仅对同一个库存ID的记录进行累计计算
  • ORDER BY WeekEndDate:按周结束日期排序,保证累计顺序是时间正序
  • ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW:明确累计范围是从分组内第一行到当前行(该子句可省略,默认窗口范围即为该规则)

效果验证

对于每个InventoryID的每一周:

  1. 累加从第一周到当前周的所有DeltaQty得到CumulativeDeltaQty
  2. 用当期AvailableQty加上这个累计值,得到最终的CumulativeAvailQty

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:10:36