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/…但是如果两个日期之间的间隔大于窗口的大小,则它不起作用,在这个特定的情况下,它将放置最后一行的值,而不是平均值。如果你知道如何不使用笛卡尔积,我很高兴听到这个消息,谢谢!