使用SUM() OVER()实现累加计算,通过ORDER BY定义顺序,可结合PARTITION BY按组累加,支持高效运行总计。

SQL 中实现累加计算(即运行总计)通常使用窗口函数,特别是 SUM() OVER()。这是最常用且高效的方法。
通过定义窗口范围,可以让 SUM 函数对从第一行到当前行的数据进行累计求和。
假设有一张销售表 sales,包含日期和金额:示例数据:
| date | amount | |------------|--------| | 2024-01-01 | 100 | | 2024-01-02 | 150 | | 2024-01-03 | 200 |
SQL 查询实现累加:
SELECT date, amount, SUM(amount) OVER (ORDER BY date) AS running_total FROM sales;
结果:
| date | amount | running_total | |------------|--------|---------------| | 2024-01-01 | 100 | 100 | | 2024-01-02 | 150 | 250 | | 2024-01-03 | 200 | 450 |
如果需要在每个分组内独立累加,使用 PARTITION BY。
例如,不同销售人员各自的每日累计销售额:
SELECT
salesperson,
date,
amount,
SUM(amount) OVER (
PARTITION BY salesperson
ORDER BY date
) AS running_total
FROM sales_data;
可以显式指定窗口范围,比如只累加前 N 行。
例如:累加当前行及前一行的和SUM(amount) OVER ( ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW )
基本上就这些。核心是利用 SUM() + OVER() + ORDER BY 构造有序窗口,让数据库自动完成逐行累加。这种方法简洁、高效,适用于大多数支持窗口函数的数据库(如 PostgreSQL、SQL Server、Oracle、MySQL 8.0+)。
以上就是SQL 数值函数如何实现累加计算?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号