Redshift SQL:如何获取今天的计数以及前三天的计数总和

时间:2019-10-15 17:22:31

标签: 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 |
| 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的Prev3DaysCount为284是来自前3天(99 + 95 + 90)。我认为可以使用SUM窗口功能,但无法弄清楚如何将窗口限制为前3天。

1 个答案:

答案 0 :(得分:2)

您可以使用窗口函数(连同COALESCE一起将null(在第一行中)转换为0):

SELECT
  day,
  COALESCE(
    SUM(count) OVER (ORDER BY day ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING),
    0
  ) AS Prev3DaysCount
FROM t;

返回:

┌────────────┬────────────────┐
│    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)