jueves, 17 de noviembre de 2016

Función GROUPING

La función GROUPING se puede utilizar con los operadores CUBE o ROLLUP para entender mejor el modo en que se ha obtenido un valor de resumen. 

La función GROUPING utiliza una sola columna como argumento. El valor de expr en la función GROUPING se debe corresponder con una de las expresiones de la cláusula GROUP BY. La función devuelve un valor de 0 ó 1. 

Los valores devueltos por la función GROUPING son útiles para: 
Determinar el nivel de agregación de un subtotal dado; es decir, el grupo o los grupos en los que se basa el subtotal 

Identificar si un valor NULL en la columna de expresiones de una fila del juego de resultado indica: 
Un valor NULL de la tabla base (valor NULL almacenado) 
Un valor NULL creado por ROLLUP o CUBE (como resultado de una función de grupo en esa expresión) 

Un valor de 0 devuelto por la función GROUPING basándose en una expresión indica una de estas posibilidades: 

Se ha utilizado la expresión para calcular el valor agregado. 
El valor NULL de la columna de expresiones es un valor NULL almacenado. 

Un valor de 1 devuelto por la función GROUPING basándose en una expresión indica una de estas posibilidades:  
No se ha utilizado la expresión para calcular el valor agregado.  

El valor NULL de la columna de expresiones se crea mediante ROLLUP o CUBE como resultado del agrupamiento. 

La función GROUPING:  
Se utiliza con los operadores CUBE o ROLLUP 
Se utiliza para encontrar los grupos que forman el subtotal en una fila 
Se utiliza para diferenciar los valores NULL almacenados de los valores NULL creados por ROLLUP o CUBE 
Devuelve 0 ó 1 


Ejemplo de una Función GROUPING  
En el ejemplo de la diapositiva, observe el valor de resumen 4400 de la primera fila (etiquetado como 1). Este valor de resumen es el salario total del identificador de puesto AD_ASST dentro del departamento 10. Para calcular este valor de resumen, se han tenido en cuenta las columnas DEPARTMENT_ID y JOB_ID. Así pues, se devuelve un valor de 0 para las expresiones GROUPING(department_id) y GROUPING(job_id). 

Observe el valor de resumen 4400 de la segunda fila (etiquetado como 2). Este valor es el salario total del departamento 10 y se ha calculado teniendo en cuenta la columna DEPARTMENT_ID; así pues, GROUPING(department_id) ha devuelto un valor de 0. Como la columna JOB_ID no se ha tenido en cuenta para calcular este valor, se ha devuelto un valor de 1 para GROUPING(job_id). En la quinta fila, puede observar una salida parecida. 

En la última fila, observe el valor de resumen 54800 (etiquetado como 3). Es el salario total para los departamentos cuyo identificador es menor que 50 y todos los cargos. Para calcular este valor de resumen, no se ha tenido en cuenta ninguna de las columnas DEPARTMENT_ID y JOB_ID. Así pues, se devuelve un valor de 1 para las expresiones GROUPING(department_id) y GROUPING(job_id). 
Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?