【发布时间】:2021-11-23 12:59:05
【问题描述】:
我的数据如下所示:
| date | sku | inventory_added | demand |
|---|---|---|---|
| 22nd Nov 2021 | XYZ | 70 | 18 |
| 23rd Nov 2021 | XYZ | 0 | 18 |
| 24th Nov 2021 | XYZ | 0 | 50 |
| 25th Nov 2021 | XYZ | 0 | 15 |
| 26th Nov 2021 | XYZ | 80 | 30 |
| 27th Nov 2021 | XYZ | 0 | 20 |
| 28th Nov 2021 | XYZ | 0 | 15 |
| 29th Nov 2021 | XYZ | 0 | 20 |
| 30th Nov 2021 | XYZ | 0 | 10 |
| 1st Dec 2021 | XYZ | 100 | 40 |
| 2nd Dec 2021 | XYZ | 0 | 10 |
我想使用 BigQuery SQL 创建一个名为 solution 的新列,在第一行,即 2021 年 11 月 22 日,我希望公式为 - inventory_added - demand。
这将给我solution 的第一行值将是 52。
现在我不能做的是从第二行开始:
所以,接下来是52 (remaining inventory from previous day) + 0 (inventory_added on 23rd Nov 2021) - 18 (demand on 23 Nov 2021)。这等于 34。
类似地转到下一行,即 11 月 24 日:
solution 中的值将是 34 + 0 - 50 = -16。现在既然是负数,就应该设为0。
我试过了 - MAX(solutions, 0)。
结果将如下所示:
| date | sku | inventory_added | demand | solution |
|---|---|---|---|---|
| 22nd Nov 2021 | XYZ | 70 | 18 | 52 |
| 23rd Nov 2021 | XYZ | 0 | 18 | 34 |
| 24th Nov 2021 | XYZ | 0 | 50 | 0 |
| 25th Nov 2021 | XYZ | 0 | 15 | 0 |
| 26th Nov 2021 | XYZ | 80 | 30 | 50 |
| 27th Nov 2021 | XYZ | 0 | 20 | 30 |
| 28th Nov 2021 | XYZ | 0 | 15 | 15 |
| 29th Nov 2021 | XYZ | 0 | 20 | 0 |
| 30th Nov 2021 | XYZ | 0 | 10 | 0 |
| 1st Dec 2021 | XYZ | 100 | 40 | 60 |
| 2nd Dec 2021 | XYZ | 0 | 10 | 50 |
我不确定 BigQuery 是否可以实现这一点,但欢迎提出所有建议。
谢谢!
【问题讨论】:
标签: sql google-bigquery bigquery-udf