Está en la página 1de 7

Funciones Analticas

En esta oportunidad veremos una tcnica interesante en SQL para relacionar valores de 2 filas consecutivas, para todos los registros de una tabla. El criterio de 'consecutividad' puede estar dado por alguna de las columnas de la tabla, como el id, la fecha de creacin del registro, etc .

SQL Funciones
Funciones SQL estn incorporados en la base de datos Oracle y estn disponibles para su uso en diversas sentencias de SQL apropiado. No hay que confundir las funciones de SQL con funciones definidas por el usuario escritas en PL / SQL. Si se llama a una funcin de SQL con un argumento de un tipo de datos que no sean el tipo de datos esperados por la funcin de SQL, Oracle intenta convertir el argumento de que el tipo de datos espera que antes de realizar la funcin de SQL. Si se llama a una funcin de SQL con un argumento nulo, la funcin de SQL vuelve automticamente nula. La nica funcin de SQL que no necesariamente siguen este comportamiento son CONCAT ,NVL , y REPLACE . En los diagramas de sintaxis para las funciones de SQL, los argumentos se indican sus tipos. Cuando el parmetro de function aparece en la sintaxis SQL, sustituirla por una de las funciones descritas en esta seccin. Las funciones estn agrupadas por los tipos de datos de sus argumentos y sus valores de retorno. La sintaxis que muestra las categoras de las funciones siguientes:

Funcin:: =

Descripcin de la ilustracin function.gif

single_row_function:: =

Descripcin de la ilustracin single_row_function.gif

Las secciones que siguen la lista de funciones integradas de SQL en cada uno de los grupos se ilustra en los diagramas anteriores, excepto las funciones definidas por el usuario. Todas las funciones integradas de SQL se describe a continuacin en orden alfabtico.

Funciones analticas
Las funciones analticas calculan un valor agregado sobre la base de un grupo de filas. Se diferencian de las funciones de agregado de que regresen varias filas para cada grupo. El grupo de filas se llama una ventana y se define por la analytic_clause . Para cada fila, una ventana corredera de filas se define. La ventana determina el rango de filas para realizar los clculos para la fila actual. los tamaos de ventanas puede basarse en un nmero fsico de filas o un intervalo de lgica, como el tiempo. Las funciones analticas son el ltimo conjunto de operaciones realizadas en una consulta a excepcin de la final ORDER BY clusula. Todo se une y todos los WHERE ,GROUP BY , y HAVING clusulas se completan antes de las funciones analticas se procesan. Por lo tanto, las funciones analticas slo pueden aparecer en la lista de seleccin o ORDER BY clusula. Las funciones analticas se utilizan para calcular acumulativo, en movimiento, centrado, y presentacin de informes agregados.

analytic_function:: =

Descripcin de la ilustracin analytic_function.gif

analytic_clause:: =

Descripcin de la ilustracin analytic_clause.gif

query_partition_clause :: =

Descripcin de la ilustracin query_partition_clause.gif

order_by_clause :: =

Descripcin de la ilustracin order_by_clause.gif

windowing_clause :: =

Descripcin de la ilustracin windowing_clause.gif La semntica de esta sintaxis se discuten en las secciones que siguen.

analytic_function
Especifique el nombre de una funcin analtica (vase el listado de las funciones analticas despus de esta discusin de la semntica).

argumentos
Las funciones analticas tomar 0-3 argumentos. Los argumentos pueden ser cualquier tipo de datos numricos o de cualquier tipo de datos numricos que se pueden convertir implcitamente en un tipo de datos numricos. Oracle determina el argumento con la mayor prioridad numrica y convierte implcitamente el resto de argumentos que tipo de datos. El tipo de retorno es tambin el tipo de datos, a menos que se indique lo contrario para una funcin individual.

analytic_clause
Utilice OVER analytic_clause para indicar que la funcin opera en un conjunto de resultados de la consulta. Es decir, se calcula despus de la FROM ,WHERE , GROUP BY , y HAVING clusulas. Usted puede especificar las funciones analticas de esta clusula en la lista de seleccin oORDER BY clusula. Para filtrar los resultados de una consulta basada en una funcin analtica, de incluir esas funciones dentro de la consulta de los padres, y luego filtrar los resultados de la subconsulta anidada.
Notas sobre el analytic_clause: y

No se puede especificar cualquier funcin analtica en cualquier parte del analytic_clause . Es decir, no se puede anidar funciones analticas. Sin embargo, puede especificar una funcin analtica en una subconsulta y calcular otra funcin analtica del mismo. Usted puede especificar OVER analytic_clause con analtica funciones definidas por el usuario, as como las funciones integradas de anlisis. Vea CREATE FUNCTION .

query_partition_clause

Utilice la PARTITION BY clusula de dividir el resultado de la consulta establecidos en grupos basados en uno o ms value_expr . Si se omite esta clusula, la funcin trata a todas las filas de los resultados de la consulta como un solo grupo. Para utilizar el query_partition_clause en una funcin analtica, utilizar la rama superior de la sintaxis (sin parntesis). Para utilizar esta clusula en un modelo de consulta (en el model_column_clauses ) o una particin de combinacin externa (en el outer_join_clause ), utilizar la rama inferior de la sintaxis (con parntesis). Puede especificar varias funciones analticas en la misma consulta, cada una con el mismo o diferentes PARTITION BY llaves. Si los objetos que se consulta tienen el atributo paralelo, y si se especifica una funcin analtica con la query_partition_clause , entonces la funcin de clculos en paralelo son as.

Los valores vlidos de value_expr son constantes, las columnas, las funciones no analticas, las expresiones de funcin o expresiones que cualquiera de ellos.

order_by_clause

Utilice el order_by_clause para especificar cmo los datos se ordenan dentro de una particin. Para todas las funciones analticas, salvo PERCENTILE_CONT y PERCENTILE_DISC (que slo reciben una sola tecla), usted puede ordenar los valores de una particin en varias claves, cada uno definido por un value_expr y cada uno calificado por una secuencia de pedidos. Dentro de cada funcin, puede especificar varias expresiones con el pedido. Si lo hace, es especialmente til cuando se utilizan las funciones que los valores de rango, ya que la segunda expresin puede resolver los vnculos entre los mismos valores de la primera expresin. Cada vez que el order_by_clause resultados en valores idnticos para varias filas, la funcin devuelve el resultado de la misma para cada una de esas filas. Por favor, consulte el ejemplo de anlisis de SUMA para una ilustracin de este comportamiento.
Restriccin de la clusula ORDER BY

Cuando se utiliza en una funcin analtica, la order_by_clause debe tener una expresin ( ). El SIBLINGS palabra clave no es vlida (que slo es relevante en las consultas jerrquicas). Posicin ( position ) y los alias de columna ( c_alias ) tambin son vlidos. De lo contrario este order_by_clause es la misma que se utiliza para ordenar la consulta general o una subconsulta.
expr

ASC | DESC

Especifique la secuencia de ordenacin (ascendente o descendente). ASC es el valor predeterminado.


NULLS PRIMERA | NULLS LTIMA

Especificar si las filas devueltas que contengan valores nulos debe aparecer primero o el ltimo en la secuencia con el pedido.
NULLS LAST es el valor predeterminado de orden ascendente, y NULLS FIRST es el predeterminado para orden descendente.

Las funciones analticas siempre operan en filas en el orden especificado en el funcin. Sin embargo, el order_by_clause de la funcin no garantiza el orden de los resultados. Utilice el order_by_clause de la consulta para garantizar el resultado final con el pedido.
order_by_clause de la

windowing_clause Algunas funciones analticas permiten al windowing_clause . En la lista de las funciones analticas al final de esta seccin, las funciones que permiten al windowing_clause son seguidos por un asterisco (*). FILAS | GAMA Estas palabras definen para cada fila de una ventana (un conjunto fsicos o lgicos de filas) utilizado para calcular el resultado de la funcin. La funcin se aplica a todas las filas de la ventana. La ventana se mover a travs del conjunto de resultados de consulta o la particin de arriba a abajo.
y y ROWS especifica la ventana en unidades fsicas (filas). RANGE especifica la ventana como una lgica de compensacin.

No se puede especificar esta clusula a menos que haya especificado el order_by_clause . El valor devuelto por una funcin analtica con una lgica de compensacin siempre es determinista. Sin embargo, el valor devuelto por una funcin analtica con un desplazamiento fsico puede producir resultados no determinista a menos que los resultados de la expresin de pedido en un nico pedido. Puede que tenga que especificar varias columnas de la order_by_clause para lograr este nico pedido. ENTRE ...Y Utilice el BETWEEN ...AND clusula para especificar un punto de partida y el punto final de la ventana. La primera expresin (antes de AND ) se define el punto de inicio y la segunda expresin (despus de AND ), define el punto final. Si se omite BETWEEN y especificar slo un punto final, a continuacin, Oracle considera que el punto de inicio, y los valores por defecto punto final a la fila actual. Sin lmites ANTERIOR Especifique UNBOUNDED PRECEDING para indicar que la ventana se inicia en la primera fila de la particin. Esta es la especificacin de punto de partida y no se puede utilizar como una especificacin de punto final. Sin lmites SIGUIENTE Especifique UNBOUNDED FOLLOWING para indicar que la ventana termina en la ltima fila de la particin. Esta es la especificacin de punto final y no puede utilizarse como una especificacin de punto de partida.

CURSO DE FILA Como punto de partida, CURRENT ROW especifica que la ventana se inicia en la fila actual o el valor (dependiendo de si se ha especificado ROW o RANGE , respectivamente). En este caso, el punto final no puede ser value_exprPRECEDING . Como punto final, CURRENT ROW especifica que la ventana termina en la fila actual o el valor (dependiendo de si se ha especificado ROW o RANGE , respectivamente). En este caso el punto de inicio no puede ser value_exprFOLLOWING . value_expr ANTERIOR o SIGUIENTE value_expr Para RANGE o ROW :
y y

Si value_expr FOLLOWING es el punto de partida, el punto final debe ser value_exprFOLLOWING . Si value_expr PRECEDING es el punto final, entonces el punto de partida debe ser value_exprPRECEDING .

Si est definiendo una ventana lgica definida por un intervalo de tiempo en formato numrico, entonces puede que tenga que utilizar las funciones de conversin.

OLAP
OLAP es el acrnimo en ingls de procesamiento analtico en lnea (On-Line AnalyticalProcessing). Es una solucin utilizada en el campo de la llamada Inteligencia empresarial (o Business Intelligence) cuyo objetivo es agilizar la consulta de grandes cantidades de datos. Para ello utiliza estructuras multidimensionales (o Cubos OLAP) que contienen datos resumidos de grandes Bases de datos o Sistemas Transaccionales (OLTP). Se usa en informes de negocios de ventas, marketing, informes de direccin, minera de datos y reas similares. Tipos de sistemas OLAP
Tradicionalmente, los sistemas OLAP se clasifican segn las siguientes categoras: Implementacin OLAP que almacena los datos en un motor relacional. Tpicamente, los datos son detallados, evitando las agregaciones y las tablas se encuentran normalizadas. Los esquemas ms comunes sobre los que se trabaja son estrellacopo de nieve, aunque es posible trabajar sobre cualquier base de datos relacional. La arquitectura est compuest por un servidor de a banco de datos relacional y el motor OLAP se encuentra en un servidor dedicado. La principal ventaja de esta arquitectura es que permite el anlisis de una enorme cantidad de datos.

HOLAP (Hybrid OLAP)


Almacena algunos datos en un motor relacional y otros en una base de datos multidimensional.

También podría gustarte