在SQL中按组计算移动平均数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL中按组计算移动平均数相关的知识,希望对你有一定的参考价值。

使用SQL,我可以计算出这样的移动平均线

SELECT id,date,var,AVG(var) OVER (ORDER BY  UNIX_DATE(DATE(date)) RANGE BETWEEN 6 PRECEDING AND CURRENT ROW) AS var_mov_avg_7d
FROM table_name
WHERE id LIKE '2001'

但是,我怎样才能对表中的所有id分别进行计算呢?

答案

你想要的是 partition by:

SELECT id,date,var,
       AVG(var) OVER (PARTITION BY id 
                      ORDER BY UNIX_DATE(DATE(date))
                      RANGE BETWEEN 6 PRECEDING AND CURRENT ROW
                     ) AS var_mov_avg_7d
FROM table_name;

以上是关于在SQL中按组计算移动平均数的主要内容,如果未能解决你的问题,请参考以下文章

R中按组月的平均温度

在R中按组应用滚动平均值

在 SQL 中按组中的行计算时间差异

如何在 R 的列表中按组获取平均值

在具有重复行的 SQL Server 表中按组查找行号

如何在ggplot的箱线图中按组绘制平均值