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

SQL 中实现累加计算(即运行总计)通常使用窗口函数,特别是 SUM() OVER()。这是最常用且高效的方法。
使用 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_totalFROM sales;
结果:
腾讯智影-AI数字人
基于AI数字人能力,实现7*24小时AI数字人直播带货,低成本实现直播业务快速增增,全天智能在线直播
73 查看详情
| 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_totalFROM 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 数值函数如何实现累加计算?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/585552.html
微信扫一扫
支付宝扫一扫