Redshift:除分区之外的不同值的总和

时间:2016-07-06 09:41:32

标签: sql amazon-web-services amazon-redshift

如何在Redshift的学生表中单独添加学生ID的不同标记?

在oracle中可行,

SELECT SUM(distinct marks) OVER (PARTITION BY studentid) FROM student;

但这在Redshift中无效!我想在没有单独使用SELECT语句的情况下解决这个问题。

2 个答案:

答案 0 :(得分:1)

当窗口函数不可用时,您必须使用JOIN或相关查询。

相关查询(仅选择)

SELECT t.* ,
       (SELECT sum(distinct marks) FROM student s 
        WHERE s.studentid = t.studentid) as stud_sum
FROM student t

答案 1 :(得分:0)

窗口功能是着名的&在Redshift有影响力。

由于Redshift DB是Postgres的一个分支,因此Postgres 8.x支持的大多数Windows功能都可以灵活使用。

对于给出SQL,你可以写一些东西

SELECT studentid, SUM(distinct marks) 
  OVER (PARTITION BY studentid) FROM student;

SQL应该在Redshift中工作。以下是所有Window功能支持的documentation