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>);
我有一些这样的数据:
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>);