首页 > 数据库 > SQL > 正文

SQL 数值函数如何计算累计和与平均值?

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-10-10 10:31:01
原创
614人浏览过
使用窗口函数可计算累计和与移动平均值,SUM()和AVG()结合OVER()子句按排序或分组实现累积计算,如按产品分组的累计收入和3日移动平均。

sql 数值函数如何计算累计和与平均值?

在 SQL 中,计算累计和与平均值主要依赖窗口函数(Window Functions),它们可以在不改变原始行数的情况下,对数据进行分组、排序并执行累积计算。

累计和(Running Total)

使用 SUM() 窗口函数结合 OVER() 子句可以实现累计和。关键在于定义排序顺序,确保累计按预期进行。

语法示例:

SUM(列名) OVER (ORDER BY 排序列)

如果需要按某一维度(如用户、部门)分别计算累计和,则加入 PARTITION BY

SUM(金额) OVER (PARTITION BY 用户ID ORDER BY 日期)

这表示:每个用户的金额按日期顺序逐行累加。

移动平均值(Moving Average)

平均值可通过 AVG() 窗口函数实现。与 SUM 类似,结合 OVER() 可计算累计平均或指定范围的移动平均。

即构数智人
即构数智人

即构数智人是由即构科技推出的AI虚拟数字人视频创作平台,支持数字人形象定制、短视频创作、数字人直播等。

即构数智人36
查看详情 即构数智人

计算每个记录的累计平均值:

AVG(数值) OVER (ORDER BY 时间戳 ROWS UNBOUNDED PRECEDING)

若要计算最近 3 行的移动平均(含当前行),使用:

AVG(数值) OVER (ORDER BY 时间戳 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)

实际应用示例

假设有一张销售表 sales,包含字段:date, product, revenue。想查看每个产品每日收入的累计和与 3 日移动平均:

SELECT
  date,
  product,
  revenue,
  SUM(revenue) OVER (PARTITION BY product ORDER BY date) AS running_total,
  AVG(revenue) OVER (PARTITION BY product ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg
FROM sales;

结果中每行保留原始数据,同时附加两个计算列:累计收入和近期平均收入。

基本上就这些。掌握 OVER() 中的 ORDER BYROWS 定义是关键,能灵活控制累计与滑动计算的范围。

以上就是SQL 数值函数如何计算累计和与平均值?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号