Pivote con/sin tablefunc

Pivote con/sin tablefunc

Una tabla de pivote es una herramienta poderosa para estimar, compilar y revisar datos para encontrar patrones y tendencias aún más fáciles. Las tablas dinámicas se pueden utilizar para agregar, clasificar, organizar, reorganizar, reorganizar, grupos, total o datos promedio en un conjunto de datos para comprender verdaderamente las asociaciones y dependencias de datos. El uso de una tabla de pivote como ilustración es la forma más fácil de demostrar cómo funciona este método. PostgreSQL 8.3 se lanzó hace unos años, y una nueva versión llamada 'tabla' fue añadido. Tabla es un componente que contiene varios métodos que producen tablas (es decir, múltiples filas). Esta modificación viene con una gama genial de características. El método de CrosSstab, que se utilizará para crear tablas dinámicas, está entre ellas. El método de crosstab toma un argumento textual: un comando SQL que devuelve datos sin procesar en el primer diseño y devuelve una tabla en el diseño posterior.

Ejemplo de tabla de pivote sin tabla:

Para comenzar a trabajar en el módulo PostgreSQL con el módulo 'tablefunc', debe intentar hacer una tabla de pivote sin ella. Entonces, abramos el shell de línea de comandos PostgreSQL y proporcionemos los valores de los parámetros para el servidor, la base de datos, el número de puerto, el nombre de usuario y la contraseña requeridos. Deje estos parámetros vacíos si desea usar los parámetros seleccionados predeterminados.

Crearemos una nueva tabla llamada 'prueba' en la base de datos 'prueba' con algunos campos en ella, como se muestra a continuación.

>> Crear prueba de tabla (id int, nombre varchar (20), sal int, trabajo varchar (20));

Después de crear una tabla, es hora de insertar algunos valores en la tabla, como se muestra en la consulta a continuación.

>> Insertar en la prueba (id, nombre, sal, trabajo) valores (11, 'aqsa', 45000, 'escritor'), (11, 'aqsa', 48000, 'oficial'), (11, 'aqsa', 50000, 'Doctor'), (12, 'Raza', 40000, 'Oficial'), (11, 'Raza', 60000, 'Doctor'), (12, 'Raza', 67000, 'Oficial'), (( 13, 'Saeed', 85000, 'escritor'), (13, 'Saeed', 69000, 'Oficial'), (13, 'Saeed', 90000, 'Doctor');

Puede ver que los datos relevantes se han insertado correctamente. Puede ver que esta tabla tiene más de 1 de los mismos valores para ID, nombre y trabajo.

>> seleccionar * de la entrada;

Creemos una tabla de pivote, que resumirá el registro de la "prueba" de la tabla utilizando la consulta a continuación. El comando fusiona los mismos valores de la columna 'id' y 'nombre' en una fila mientras toma la suma de los valores de la columna 'salario' para los mismos datos según 'id' y 'nombre'. También dice cuántas veces se ha producido un valor en el conjunto particular de valores.

>> seleccione ID, nombre, suma (sal) Sal, suma ((Job = 'Doctor') :: int) Doctor, Sum ((Job = 'Writer') :: int) Escritor, Sum ((Job = 'Oficial ') :: int) "Oficial" del grupo de prueba por id, nombre;

Ejemplo de tabla de pivote con tablefunc:

Comenzaremos explicando nuestro punto principal desde un punto de vista realista, y luego describiremos la creación de la tabla de pivote en pasos que nos gustan. Entonces, en primer lugar, tienes que agregar tres tablas para trabajar en un pivote. La primera tabla que vamos a crear es 'maquillaje', que almacenará información sobre lo esencial de maquillaje. Pruebe la siguiente consulta en el shell de línea de comandos para crear esta tabla.

>> Crear tabla si no existe maquillaje (make_id int primario, p_name varchar (100) no nulo);

Después de la creación de la tabla 'maquillaje', le agregemos algunos registros. Estaremos ejecutando la consulta que se cotiza a continuación en el shell para agregar 10 registros a esta tabla.

Necesitamos crear otra tabla llamada 'usuarios' que mantenga los registros de los usuarios utilizando esos productos. Ejecute la consulta establecida en el shell para crear esta tabla.

>> Crear tabla si no existe usuarios (user_id int primario clave, u_name varchar (100) no nulo);

Hemos insertado los 20 registros de la tabla 'usuarios' como se muestra en la imagen a continuación.

Tenemos otra tabla, 'Makeup_user', que contendrá los registros mutuos de la tabla de 'maquillaje' y 'usuarios'. Tiene otro campo, 'precio', que ahorrará el precio del producto. La tabla se ha generado utilizando la consulta a continuación.

>> Crear tabla si no existe Makeup_user (ID int primario clave, Mid int no referencias nulo maquillaje (make_id), uid int no referencias nulo usuarios (user_id), precio decimal (18,2));

Hemos insertado un total de 56 registros en esta tabla, como se muestra en la imagen.

Creemos una vista más para usarlo para la generación de una tabla de pivote. Esta vista es utilizar la unión interna para que coincida con los valores de la columna clave principal de las tres tablas y obtener el 'nombre', 'Product_Name' y el 'costo' de un producto de una tabla 'clientes'

>> Crear vista v_makeup_users como select c.u_name, P.P_NAME, PC.Precio de los usuarios c.user_id = PC.Uid interno unir maquillaje P en PC.Mid = P.make_id;

Para usar esto, primero debe instalar el paquete de tabla para la base de datos que desea usar. Este paquete está incorporado PostgreSQL 9.1 y luego lanzado ejecutando el comando estado a continuación. El paquete tablefunc ha sido habilitado para usted ahora.

>> Crear extensión si no existe tablefunc;

Después de crear la extensión, es hora de usar la función crosstab () para crear una tabla de pivote. Entonces usaremos la siguiente consulta en el shell de línea de comandos para hacerlo. Esta consulta está obteniendo primero el registro de la recién creada 'Vista'. Estos registros serán ordenados y agrupados por el orden ascendente de las columnas 'u_name' y 'p_name'. Hemos enumerado su nombre de maquillaje para cada cliente, que han comprado, y el costo total de los productos comprados en la tabla. Hemos aplicado el sindicato All Operator en la columna 'P_Name' para resumir todos los productos comprados por un cliente por separado. Esto resumirá todos los costos de los productos comprados por un usuario en un valor.

Nuestra tabla de pivote ha sido lista y mostrada en la imagen. Puede ver claramente que algunos espacios de columna están vacíos debajo de cada nombre P_NAME porque no han comprado ese producto en particular.

Conclusión:

Ahora hemos aprendido brillantemente a crear una tabla de pivote para resumir los resultados de las tablas con y sin el uso del paquete TableFunc.