小编Max*_*f23的帖子

如何在 BigQuery 中使用 LAG 和 OVER 计算每周移动平均值的百分比变化?

我\xe2\x80\x99m 使用BigQuery USA Facts Covid-19 开放数据集开展项目。数据如下所示:\n在此输入图像描述

\n

I\xe2\x80\x99m 尝试创建一个查询,该查询为我提供按县划分的 7 天 covid 病例数据的百分比变化(向上或向下)。最终结果将是县、日期以及新冠病例 7 天移动平均值的百分比变化。最终,这将使我能够展示哪些病例相对稳定,哪些病例正在增加,也就是热点。

\n

我是 LAG 和 OVER 的新手。所以我很确定我只是在 CTE 中缺少一些基本的 order by 或 group by 。

\n

这\xe2\x80\x99很奇怪,因为当我只选择一个县(其中county_name=\xe2\x80\x9dX\xe2\x80\x9d)时,我能够得到7天移动平均值——它只是给我每天一个很好的百分比,告诉我它是增加还是减少。问题是,当我不只选择一个县时,我只是无法弄清楚我需要做什么或需要更改什么才能仍然获得相同的值。我最终得到了毫无意义的值。我很确定这是因为我错误地使用了窗口函数。

\n

这里\xe2\x80\x99是我的代码:

\n
\nWITH \na AS (SELECT long.*,\ndeaths-lag(deaths) over (order by date) as deaths_increase,\nconfirmed_cases - lag(confirmed_cases) over (order by date) as cases_increase,\nFROM `bigquery-public-data.covid19_usafacts.summary` as long\nwhere date >= cast(\'2020-05-03\' as date)\n\n\n)\n,b as (\n SELECT\n a.*,\n AVG(a.deaths_increase) OVER(ORDER BY a.date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS seven_day_avg_deaths,\n AVG(a.cases_increase) …
Run Code Online (Sandbox Code Playgroud)

sql window-functions google-bigquery

4
推荐指数
1
解决办法
6123
查看次数

标签 统计

google-bigquery ×1

sql ×1

window-functions ×1