Google bigquery 如何计算BigQuery上的滚动平均值
我面临着一个问题,我不知道如何在大查询中计算它,我有一个表,其中有一个用户吃香蕉的数量,与他吃香蕉的日期相关:Google bigquery 如何计算BigQuery上的滚动平均值,google-bigquery,Google Bigquery,我面临着一个问题,我不知道如何在大查询中计算它,我有一个表,其中有一个用户吃香蕉的数量,与他吃香蕉的日期相关: +------+-------+--------------+ | user | banana| date | +------+-------+--------------+ | a | 5 | 2019/01/18 | | . | ..| | | a | 2 | 2019/05/18 | |
+------+-------+--------------+
| user | banana| date |
+------+-------+--------------+
| a | 5 | 2019/01/18 |
| . | ..| |
| a | 2 | 2019/05/18 |
| b | 2 | 2019/02/18 |
| b | 3 | 2019/03/18 |
| b | 1 | 2019/03/18 |
+------+-------+--------------+
我想得到这样的东西:
+------+-------------+--------------------+----------------------+
| user | date T |AVG1st week before T|AVG2nd week before T|
+------+-------------+--------------------+----------------------+
| a | 2019/01/18 | 2 | 1 |
| . | .. | .. | . |
| a | 2019/01/20 | 3 | 1 |
| b | 2 | 2 | 2.5 |
| b | 3 | 2 | 5 |
| b | 1 | 1 | 2 |
+------+-------------+--------------------+----------------------+
其中,“T前1周的平均值”是指用户在T前7天内每天食用的香蕉的平均值
我认为对于每一行,我将计算“T之前7天”变量并创建“T之前14天”变量。然后在子查询中计算金额,但我认为这不是处理此问题的最佳方法
如果你有什么建议,我很乐意讨论
提前谢谢你,一些值得一读的东西 下面是我想到的一个片段,在当前行中给出了过去7天内“平均香蕉食用量”
SELECT
user,
banana,
date,
AVG(banana) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS avg
FROM
`banana.banana`
WHERE
user = 'a'
您好,首先感谢您的回答,我非常感谢。问题是我的数据是稀疏的,有一些日期缺失,想象一下两个日期之间有一周的间隔,如何考虑sql请求中的稀疏部分?经过一些搜索,我发现了这个:stackoverflow.com/questions/49883311/…但是如果两个日期之间的间隔大于窗口的大小,则它不起作用,在这个特定的情况下,它将放置最后一行的值,而不是平均值。如果你知道如何不使用笛卡尔积,我很高兴听到这个消息,谢谢!