2016-07-06 59 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