我已經用Oracle編寫了一個複雜的SQL查詢,我想在同一個分區上使用兩個分析函數。Oracle分析函數 - 如何重用PARTITION BY子句?
讓我們很簡單但是不太多:
SELECT col1,
MAX(col2) OVER(PARTITION BY col3, col4, col5, col6,
CASE WHEN col7 LIKE 'foo'
THEN SUBSTR(col7,1,5)
ELSE col7
END
ORDER BY col5 ASC, col6 DESC),
MIN(col2) OVER(PARTITION BY col3, col4, col5, col6,
CASE WHEN col7 LIKE 'foo'
THEN SUBSTR(col7,1,5)
ELSE col7
END
ORDER BY col5 ASC, col6 DESC)
FROM my_table;
是否有融通PARTITION BY
條款更優雅的語法?
謝謝。
考慮到你正在使用的函數是'MAX'和'MIN'以及'col5'和'col6'在'partition'和'order by'中,每列的'by by'子句出現是多餘的。 – 2011-03-29 13:25:44
你是對的,但這只是一個簡單的例子,它可能是LAST_VALUE或任何其他分析。 – Benoit 2011-03-29 13:29:32
[在同一分區上應用多個窗口函數]的可能重複(http://stackoverflow.com/questions/1896102/applying-multiple-window-functions-on-same-partition)。這個副本不容易找到。 – Benoit 2011-03-30 07:15:04