2016-07-06 1 views
1

Redshiftの学生テーブルに生徒IDの別のマークのみを追加するにはどうすればよいですか? OracleでRedshift:パーティション上の異なる値の合計

この作品、赤方偏移で

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

しかし、このdoesntの仕事!私は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のための

、あなたはSQLが赤方偏移で動作するはず何か

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

を書くことができます。すべてのウィンドウ機能のサポートについてはdocumentationです:

+0

これは機能しません。現在、redshiftウィンドウ関数は、あなたがリンクを提供したドキュメンテーションに見られるように、 'DISTINCT'、' ALL'または 'expression'だけをサポートしていません。 – Merlin

関連する問題