首页 > 解决方案 > 如何在 MySQL 8 中使用两个变量进行滚动平均?

问题描述

我试图弄清楚如何在日期和状态上进行滚动平均。

下面的查询仅给出了 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

标签: mysqlsqlselectaveragewindow-functions

解决方案


只需在窗口函数statepartition by子句中添加:

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

推荐阅读