Cómo utilizar el módulo Crosstab de PostrgreSQL

Como Utilizar El Modulo Crosstab De Postrgresql



Cuando ejecuta una instrucción SELECT para recuperar los registros de una tabla de PostgreSQL, los datos se devuelven en forma tabular. Es posible que la forma tabular no siempre sea la mejor para leer los datos, especialmente cuando se desea comparar los valores. Un mejor enfoque es devolver los registros como una tabla cruzada. Para eso, PostgreSQL ofrece tablefunc para permitir a los usuarios utilizar la función de tabla cruzada para representar los datos de destino como una tabla dinámica. Esta publicación detalla más sobre cómo usar la función de tabla cruzada de PostgreSQL. ¡Sigue leyendo!

Trabajar con el módulo Crosstab de PostgreSQL

Es útil tener un espacio para especificar cómo desea que se representen sus datos. Con PostgreSQL, aunque la forma predeterminada es tener los datos en forma tabular, el módulo de tabla cruzada le ofrece otra opción. Puede crear las tablas dinámicas utilizando las columnas 'seleccionadas' de una tabla de PostgreSQL para una mejor presentación.

Esta sorprendente característica viene como una extensión para la versión 8.3 de PostgreSQL. La extensión 'tablefunc' ofrece la función de tabla cruzada, lo que permite tener las tablas dinámicas como conjunto de resultados. Pongamos un ejemplo.







Primero, creamos la tabla de “resultados” con tres columnas usando el siguiente comando:





La tabla creada está vacía. Por lo tanto, continúe y use la consulta INSERT para agregarle los valores. Para este caso, insertamos algunas entradas como se muestra a continuación:





Si ejecutamos la declaración 'select', obtenemos los siguientes resultados. Observe cómo esta forma predeterminada de recuperar los registros los presenta en forma de tabla. Las columnas se utilizan como encabezados y sus respectivos valores aparecen en las filas:



Aunque el enfoque anterior funciona en la mayoría de los casos, existe otra opción para recuperar los mismos registros. Para este caso, queremos crear una tabla dinámica. Por lo tanto, utilizamos la extensión 'tablefunc' que viene con la versión 8.3+ de PostgreSQL.


Entonces, creemos una extensión 'tablefunc' para habilitarla cuando la llamemos en la consulta. Ejecute el siguiente comando:

CREAR EXTENSIÓN SI NO EXISTE tablefunc ;

Sabrás que la extensión se ha habilitado correctamente una vez que obtengas un resultado como el que tenemos en la imagen anterior.

Para nuestra función de tabla cruzada, hagamos que la primera columna sea la facultad. Debajo se encuentran las distintas facultades que tenemos en nuestra tabla. Al lado de la columna de facultad, tenemos otras columnas que representan los diferentes valores en la columna de categoría de nuestra tabla. Por último, para cada categoría, tenemos el número de estudiantes que alcanzaron las diferentes categorías.

Para lograr una tabla dinámica de este tipo, utilice la siguiente sintaxis:

SELECCIONAR * DESDE CROSSTAB ( 'SELECCIONAR columna1 , columna2 , columna3 DE nombre_tabla ORDENAR POR criteriosa’ )

COMO nuevo_nombre ( columna1 tipo_datos , columna2 tipo_datos , columna_n tipo_datos ) ;

Usando la tabla de ejemplo que creamos, nuestro comando tiene el siguiente aspecto:

Antes de ver los resultados, analicemos cómo funciona el comando del módulo de tabla cruzada. Primero, la declaración SELECT devuelve tres columnas. La primera columna se trata como el identificador de fila. En nuestro caso, es la columna “facultad”. La segunda columna, que es la columna 'categoría', representa las categorías de la tabla dinámica. Por último, la tercera columna contiene los valores de las categorías. En nuestro caso, es el número de alumnos de cada categoría.

Teniendo ese entendimiento, una vez que presionamos la tecla 'Entrar', obtenemos la tabla dinámica de la siguiente manera:

Según la tabla dinámica devuelta, podemos ver que funciona como una matriz 2D donde la primera columna de la instrucción SELECT es la primera matriz y la segunda columna es la segunda matriz de la dimensión. La tercera columna contiene los valores de los segundos elementos de la matriz.

Conclusión

La tabla cruzada de PostgreSQL es buena para representar los valores de la tabla como una tabla dinámica. Debe devolver tres columnas en su declaración SELECT para usar el módulo de tabla cruzada, y esta publicación ha compartido un ejemplo práctico sobre cómo usarlo. Además, explicamos cómo funciona el módulo de tabla cruzada para crear la tabla dinámica que utiliza la misma lógica que una matriz 2D.