分区上的不同值的总和我如何在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