使用窗口函数可计算累计和与移动平均值,SUM()和AVG()结合OVER()子句按排序或分组实现累积计算,如按产品分组的累计收入和3日移动平均。

在 SQL 中,计算累计和与平均值主要依赖窗口函数(Window Functions),它们可以在不改变原始行数的情况下,对数据进行分组、排序并执行累积计算。
使用 SUM() 窗口函数结合 OVER() 子句可以实现累计和。关键在于定义排序顺序,确保累计按预期进行。
语法示例:
SUM(列名) OVER (ORDER BY 排序列)如果需要按某一维度(如用户、部门)分别计算累计和,则加入 PARTITION BY:
SUM(金额) OVER (PARTITION BY 用户ID ORDER BY 日期)这表示:每个用户的金额按日期顺序逐行累加。
平均值可通过 AVG() 窗口函数实现。与 SUM 类似,结合 OVER() 可计算累计平均或指定范围的移动平均。
计算每个记录的累计平均值:
AVG(数值) OVER (ORDER BY 时间戳 ROWS UNBOUNDED PRECEDING)若要计算最近 3 行的移动平均(含当前行),使用:
AVG(数值) OVER (ORDER BY 时间戳 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)假设有一张销售表 sales,包含字段:date, product, revenue。想查看每个产品每日收入的累计和与 3 日移动平均:
结果中每行保留原始数据,同时附加两个计算列:累计收入和近期平均收入。
基本上就这些。掌握 OVER() 中的 ORDER BY 和 ROWS 定义是关键,能灵活控制累计与滑动计算的范围。以上就是SQL 数值函数如何计算累计和与平均值?的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号