Amazon redshift 红移SQL:如何获得今天&x27;s计数和前3天的计数总和

Amazon redshift 红移SQL:如何获得今天&x27;s计数和前3天的计数总和,amazon-redshift,Amazon Redshift,我有一张表,上面有日期和一些计数,如下所示: | Date | Count | | 2019-01-02 | 100 | | 2019-01-03 | 101 | | 2019-01-04 | 99 | | 2019-01-05 | 95 | | 2019-01-06 | 90 | | 2019-01-07 | 88 | 根据此表,我要计算的是对每个日期前3天的计数求和,如下所示: | Date | Prev3DaysCount | |

我有一张表,上面有日期和一些计数,如下所示:

| Date       | Count |
| 2019-01-02 | 100   |
| 2019-01-03 | 101   |
| 2019-01-04 |  99   |
| 2019-01-05 |  95   |
| 2019-01-06 |  90   |
| 2019-01-07 |  88   |
根据此表,我要计算的是对每个日期前3天的计数求和,如下所示:

| Date       | Prev3DaysCount |
| 2019-01-02 |    0  |
| 2019-01-03 |  100  |
| 2019-01-04 |  201  |
| 2019-01-05 |  300  |
| 2019-01-06 |  295  |
| 2019-01-07 |  284  |

例如,2019-01-07年前3天的284天是(99+95+90)的前3天。我想我可以使用SUM window函数,但我不知道如何将窗口限制在前3天。

您可以使用window函数(连同
合并
null
(第一行)转换为0):


返回:

┌────────────┬────────────────┐
│    day     │ prev3dayscount │
├────────────┼────────────────┤
│ 2019-01-02 │              0 │
│ 2019-01-03 │            100 │
│ 2019-01-04 │            201 │
│ 2019-01-05 │            300 │
│ 2019-01-06 │            295 │
│ 2019-01-07 │            284 │
└────────────┴────────────────┘
(5 rows)

你总是一天一排吗?是否有缺失的日期值(如果有,缺失的值是否应计入“前3天”)?是的,每天只有一行,没有缺失的日期。谢谢@marth。如果在过去3天中缺少任何一天怎么办?我还没有这种情况,但将来可能会这样@kee:您需要在一个“日期”表上
左键联接
,该表包含所有日期(涵盖应用程序使用的日期范围)的列表,以填补空白。在Postgresql上,您通常会使用
generate_series()
,但我认为它在Redshift上不可用。
┌────────────┬────────────────┐
│    day     │ prev3dayscount │
├────────────┼────────────────┤
│ 2019-01-02 │              0 │
│ 2019-01-03 │            100 │
│ 2019-01-04 │            201 │
│ 2019-01-05 │            300 │
│ 2019-01-06 │            295 │
│ 2019-01-07 │            284 │
└────────────┴────────────────┘
(5 rows)