2016-07-06 39 views
1

分区上的不同值的总和我如何在Redshift的学生表中添加独立标记的学生ID?Redshift:

在甲骨文工作的,

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

但在红移,这并不工作!我想解决这个问题,而不用单独的SELECT语句连接。

回答

1

当窗口功能不可用时,您必须使用JOIN或相关的查询。

相关查询(仅限选择)

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

窗函数著名&有影响力的红移。

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

对于给定的SQL,你可以写的东西

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

SQL应在红移工作。以下是适用于所有Window功能的documentation

+0

这不起作用。目前红移窗口函数不支持“DISTINCT”,仅支持“ALL”或“expression”,如您在提供链接的文档中看到的那样。 – Merlin