Aynı bölüm üzerinden iki analitik işlev kullanmak istediğim karmaşık bir SQL sorgusu Oracle ile yazdım.Oracle Analitik işlevler - PARTITION BY deyimi nasıl kullanılır?
en çok oldukça basit ama olalım: PARTITION BY
maddesini faktoring daha zarif sözdizimi
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;
var mı?
Teşekkür ederiz.
Kullandığınız işlevlerin "MAX" ve "MIN" ve ayrıca "col5" ve "col6" nın "bölüm" ve "sırayla" olduğu göz önünde bulundurulduğunda, her sütun için "by" deyimi görüntülenir. gereksiz olmak. –
Haklısınız, ancak bu basit bir örnek olarak tasarlanmıştır, LAST_VALUE veya başka bir analitik olabilir. – Benoit
[Aynı Bölüme Birden Fazla Pencere İşlevinin Uygulanması] 'nın olası kopyası (http://stackoverflow.com/questions/1896102/applying-multiple-window-functions-on-same-partition). Bu kopya bulmak kolay değildi. – Benoit