我遇到了一个问题,我不确定如何在Big Query上进行计算,我有一个表格,其中列出了用户食用的香蕉量以及与他进食时间相关的日期:
+------+-------+--------------+
| 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之前第一周的AVG”是用户在T之前的7天每天消耗的香蕉的平均值。
我认为对于每一行,我都会计算“ T之前7天”变量,并创建“ T之前14天”变量。然后在子查询中计算金额,但我认为这不是处理此金额的最佳方法。
如果您有任何建议,我将很乐意与您讨论!
先谢谢您
答案 0 :(得分:1)
值得一读的Analytic Functions Concepts in Standard SQL
这是我想出的摘录,在当前行中提供了最近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'