计算存储在 Google Big Query 中的 sql 中的 3 天滚动平均值

时间:2021-05-19 15:16:18

标签: sql

我的数据存储在数据库中的 Google Big QUEry 中。这是我的桌子的样子。

IP         Age Sex    Province  Epid_ID
19/05/2020 43  Female Bagmati   KTM-20-00206
18/05/2020 33  Male   Province1 KTM-20-00205
18/05/2020 30  Male   Province1 KTM-20-00204
18/05/2020 32  Male   Province1 KTM-20-00203
18/05/2020 63  Male   Province1 KTM-20-00202
17/05/2020 33  Male   Province2 KTM-20-00201
17/05/2020 23  Male   Province2 KTM-20-00200
16/05/2020 22  Male   Province2 KTM-20-00199
16/05/2020 23  Male   Province2 KTM-20-00198

这里,EpiD_ID 是我的唯一 ID。我想计算每个日期的 3 天滚动平均值。以下是我的预期输出。

Date      Count_Epid_ID  2_days_rolling_avg
16/05/2020  2                 0
17/05/2020  2                 0
18/05/2020  4                 2.66
19/05/2020  1                 2.33

说明:前 2 天为 0,我们从第 3 天开始计算滚动平均值。对于 18/05/2020,2.66= (2+2+4)/3,2.33 = (2+4+1)/3

我尝试使用以下问题。然而,我没有成功。

这是我写的查询,它只会给我 epid 的数量而不是滚动平均值。

<块引用>

选择 知识产权, COUNT(*) AS num, 从 interim-data.casedata.Interim Reloaded 通过...分组 知识产权

1 个答案:

答案 0 :(得分:1)

您可以使用窗口函数——假设您每天都有数据:

SELECT IP, COUNT(*) AS num,
       AVG(COUNT(*)) OVER (ORDER BY IP ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
FROM interim-data.casedata.Interim Reloaded
GROUP BY IP;

名为 IP 的列具有日期值似乎很奇怪,但这似乎是您的数据建模的方式。