2017-05-17 10 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不支持該語法。只是在每個分析語句中指定窗口:

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)操作如Oracle知道要重複使用窗口兩個語句。

+0

傷心。目標是避免代碼重複,而不是加速查詢。 – Danatela

+0

隨時提出您對Oracle的修改建議:https://community.oracle.com/community/database/database-ideas – Boneist

相關問題