首页/数据/SQL 速查/累计求和(running total)
聚合与窗口函数54 条

累计求和(running total)

用 SUM(...) OVER (ORDER BY …) 计算截至当前行的累计值:销售额累计、账户流水余额等经典场景。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT dt, amount,
       SUM(amount) OVER (ORDER BY dt
                         ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total
FROM daily_sales
ORDER BY dt;
帧从分区起点到当前行
默认帧有 ORDER BY 时默认同样是起点到当前行(RANGE 模式)
分组累计加 PARTITION BY 组内累计

易错点

  • RANGE 默认帧会把排序值相同的行一起计入(并列行为),金额流水场景通常要用 ROWS 逐行累计
  • 按天累计时缺失日期不会自动补 0,需要先补齐日期序列

数据来源与参考

  • MySQL 8.0 Reference Manual · Window Function Concepts
  • PostgreSQL Documentation · Window Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌