如何在 MySQL 8 中使用两个变量进行滚动平均?

Posted

技术标签:

【中文标题】如何在 MySQL 8 中使用两个变量进行滚动平均?【英文标题】:How to do a rolling average in MySQL 8 with two variables? 【发布时间】:2020-06-25 12:44:19 【问题描述】:

我正在尝试弄清楚如何在日期和状态之间进行滚动平均。

下面的查询仅给出了 COVID 病例正增长的平均值,但没有按州细分。

我找不到任何可以扩展下面的查询逻辑以按日期 + 状态进行滚动平均的示例(如果我错过了,请见谅。

提前致谢。

SELECT
    date,
    state,
    positiveIncrease,
    AVG( positiveIncrease ) OVER ( ORDER BY date DESC RANGE INTERVAL 3 DAY PRECEDING ) AS rolling_average 
FROM
    `covid-history` 
ORDER BY
    date DESC

【问题讨论】:

【参考方案1】:

只需将state添加到窗口函数的partition by子句中即可:

AVG(positiveIncrease) OVER ( 
    PARTITION BY state      -- partition clause
    ORDER BY date DESC 
    RANGE INTERVAL 3 DAY PRECEDING 
) AS rolling_average

【讨论】:

非常感谢!仍在学习新的 mysql 8 东西。 :)

以上是关于如何在 MySQL 8 中使用两个变量进行滚动平均?的主要内容,如果未能解决你的问题,请参考以下文章

使用 data.table 包滚动平均值到 R 中的多个变量

如何使用 python + NumPy / SciPy 计算滚动/移动平均值?

如何比较 MySQL 中两个函数的平均运行时间?

如何在熊猫中获得连续滚动平均值?

实验8-SPSS交叉表分析

R - 计算 R - 面板数据中多个变量、多年和多个品牌的 4 周滚动窗口的平均值