Column/Sum(列)在亚马逊红移

Column/Sum(Column) in amazon redshift

我有一些这样的数据:

ID   Var1     Var2   cvRate(Var1/Var2)
1     1250    85     14.70
2     15      1      15
3     496     12     41.33
4     8825    29     420.23
5     97      18     5.388

我想添加一个本质上是 Var1/(sum(Var1)) 的列,例如:

ID   Var1     Var2   cvRate(Var1/Var2) NewCol
1     1250    85     14.70             0.117
2     15      1      15                0.001
3     496     12     41.33             0.046
4     8825    29     420.23            0.826
5     97      18     5.388             0.009

我尝试了查询的几种变体:

select ID, Var1, Var2, cvRate, Var1/sum(Var1) as NewCol from (<query that generates the first table>);


Error on group by caused by using sum

我哪里错了?此外,我没有在 redshift 中创建和存储另一个 table 的奢侈,我必须就地生成我的 table。我遇到的另一个问题是生成第一个 table 的子查询相当复杂并且需要大量时间。我可能负担不起 运行 同样的查询两次。

您需要一个 window 函数,而不是聚合函数:

select ID, Var1, Var2, cvRate,
      Var1 / sum(Var1) over () as NewCol
from (<query that generates the first table>);