分區上的不同值的總和我如何在Redshift的學生表中添加獨立標記的學生ID?Redshift:
在甲骨文工作的,
SELECT SUM(distinct marks) OVER (PARTITION BY studentid) FROM student;
但在紅移,這並不工作!我想解決這個問題,而不用單獨的SELECT語句連接。
分區上的不同值的總和我如何在Redshift的學生表中添加獨立標記的學生ID?Redshift:
在甲骨文工作的,
SELECT SUM(distinct marks) OVER (PARTITION BY studentid) FROM student;
但在紅移,這並不工作!我想解決這個問題,而不用單獨的SELECT語句連接。
當窗口功能不可用時,您必須使用JOIN
或相關的查詢。
相關查詢(僅限選擇)
SELECT t.* ,
(SELECT sum(distinct marks) FROM student s
WHERE s.studentid = t.studentid) as stud_sum
FROM student t
窗函數著名&有影響力的紅移。
由於Redshift DB是Postgres的一個分支,因此Postgres 8.x支持的大多數Windows功能都可以靈活使用。
對於給定的SQL,你可以寫的東西
SELECT studentid, SUM(distinct marks)
OVER (PARTITION BY studentid) FROM student;
SQL應在紅移工作。以下是適用於所有Window功能的documentation:
這不起作用。目前紅移窗口函數不支持「DISTINCT」,僅支持「ALL」或「expression」,如您在提供鏈接的文檔中看到的那樣。 – Merlin