SQL窗口化与分组的累积和

时间:2017-04-12 01:48:49

标签: sql aggregate presto windowing

我有一张这样的桌子

|week_no|value|attribute|
-------------------------
|   1   |  3  |    a    |
|   2   |  3  |    a    |
|   3   |  3  |    a    |
|   1   |  4  |    b    |
|   2   |  4  |    b    |
|   3   |  4  |    b    |

我想要一个值列

的累积帐户
|week_no|value|attribute|accum_value|
-------------------------------------
|   1   |  3  |    a    |     3     |
|   2   |  3  |    a    |     6     |
|   3   |  3  |    a    |     9     |
|   1   |  4  |    b    |     4     |
|   2   |  4  |    b    |     8     |
|   3   |  4  |    b    |    12     |

我尝试使用此窗口函数来完成上述操作,但它似乎没有返回正确的值

SUM(value) OVER(ORDER BY 1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS accum_value

1 个答案:

答案 0 :(得分:1)

正确的窗口函数将使用partition by

SUM(value) OVER (PARTITION BY attribute ORDER BY week_no
                 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
                ) AS accum_value