sql - 亚马逊 Redshift 中的列/总和(列)

标签 sql postgresql 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 中创建和存储另一个表的奢侈,我必须就地生成我的表。我遇到的另一个问题是生成第一个表的子查询相当复杂并且需要大量时间。我可能无法承受两次运行相同的查询。

最佳答案

你需要一个窗口函数,而不是聚合函数:

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

关于sql - 亚马逊 Redshift 中的列/总和(列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27942373/

相关文章:

postgresql - 默认情况下,Azure ApplicationInsights 应用程序 map 不显示 PostgreSql 依赖项

amazon-web-services - 将数据加载到 Amazon Redshift Spectrum 时删除双引号 "

amazon-s3 - 使用 Airflow 将数据从 Redshift 卸载到 S3

php - 困惑为什么 MySQL 不接受我的查询?

mysql - 尝试使用参数创建简单过程时出错 - 需要标识符

sql - PostgreSQL:根据特定列将多行聚合为 JSON 数组

ruby-on-rails - 从数据库中删除旧记录 (Postgres/Rails)

jdbc - 找不到适用于 jdbc :redshift: 的合适驱动程序

sql - PostgreSQL - 确定总数的百分比

mysql - 在 google bigquery 中选择内部案例语句