He escrito una consulta SQL compleja con Oracle en la que quiero usar dos funciones analíticas en la misma partición.Funciones de Oracle Analytic: cómo volver a utilizar una cláusula PARTITION BY?
Vamos a ser bastante simple, pero no demasiado:
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;
¿Existe una sintaxis más elegante para factorizar la cláusula PARTITION BY
?
Gracias.
Considerando que las funciones que está utilizando son 'MAX' y' MIN' y también 'col5' y' col6' están en la 'partition' y' order by', aparece la cláusula 'order by' para cada columna ser redundante –
Tiene razón, pero este fue un simple ejemplo, podría ser LAST_VALUE o cualquier otra analítica. – Benoit
posible duplicado de [Aplicar varias funciones de ventana en la misma partición] (http://stackoverflow.com/questions/1896102/applying-multiple-window-functions-on-same-partition). Este duplicado no fue fácil de encontrar. – Benoit