2017-05-17 18 views
0

同じウィンドウ内に複数の分析関数を使用する必要があるOracleクエリーがあります。ウィンドウを一度定義してからこれらの呼び出しごとに使用するにはどうすればよいですか?ウィンドウを定義して複数のアナリティック・カラムで使用する

I.e.私はPostgreSQLのようにそれを書くためにしたい:

SELECT 
    sum(salary) OVER w, 
    avg(salary) OVER w 
FROM empsalary 
WINDOW w AS (PARTITION BY depname ORDER BY salary DESC); 

は言及を忘れ、目標は、コードの重複を避けるために、クエリをスピードアップすることではありません。

答えて

2

Oracleでは、この構文はサポートされていません。ただ、各分析文でウィンドウを指定:あなたは、クエリの実行計画を見れば、Oracleは両方のステートメントのためにウィンドウを再使用することを知っているよう

SELECT 
    sum(salary) OVER (PARTITION BY depname ORDER BY salary DESC), 
    avg(salary) OVER (PARTITION BY depname ORDER BY salary DESC) 
FROM empsalary; 

は、ただ一つのWINDOW (SORT)操作があるはずです。

+0

悲しい。目標はコードの重複を避けることであり、クエリーを高速化することではありませんでした。 – Danatela

+0

あなたの修正案をOracleに提案してください。https://community.oracle.com/community/database/database-ideas – Boneist

関連する問題