我的数据存储在数据库中的 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
通过...分组
知识产权
答案 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
的列具有日期值似乎很奇怪,但这似乎是您的数据建模的方式。