Declarando variables plpgsql

Declarando variables plpgsql

El día de hoy vamos a hablar de la declaración de las variables usando el lenguaje integrado en postgresql --> plpgslq. Mi idea con este artículo es que des otro paso más en el uso de este lenguaje que te permitirá ser un mejor experto en datos.

Tabla ejemplo

Para realizar este caso vamos a tomar este tabla que cree que se llama producto

No hay texto alternativo para esta imagen

Creación de tabla vacía

Con el fin de mostrar los datos que vamos a extraer de nuestra función, vamos a crear una nueva tabla que muestre ese KPI y el total:

No hay texto alternativo para esta imagen

Función

Una vez ya tenemos nuestra tabla podemos usar la siguiente función para almacenar esos KPI´s mediante el uso de dicha función:

No hay texto alternativo para esta imagen
No hay texto alternativo para esta imagen

  1. Se crea una función llamada "ejemplo" con retorno de tipo VOID, lo que significa que no devuelve ningún valor explícito.
  2. La función está escrita en el lenguaje PL/pgSQL.
  3. Se declaran varias variables locales dentro del bloque DECLARE:

  • "total_ventas", "total_ventas_mayor_100", "total_ventas_color_red" y "promedio_ventas" son variables de tipo double precision (números de coma flotante) y se inicializan con el valor 0.0.

  1. El bloque BEGIN- END delimita el cuerpo de la función.
  2. Se realiza una serie de consultas utilizando las funciones de agregación "SUM" y "AVG" para calcular diferentes estadísticas de ventas en la tabla "producto".

  • "total_ventas" almacena la suma de todas las ventas en la tabla "producto".
  • "total_ventas_mayor_100" almacena la suma de las ventas de productos cuyo valor de ventas sea mayor a 100.
  • "total_ventas_color_red" almacena la suma de las ventas de productos que tengan el color "rojo".
  • "promedio_ventas" almacena el promedio de las ventas de productos en la tabla "producto".

  1. La sentencia "TRUNCATE TABLE estadisticas;" se encarga de vaciar la tabla "estadisticas" antes de realizar las inserciones.
  2. A continuación, se realiza una serie de inserciones en la tabla "estadisticas" utilizando la sentencia INSERT INTO. Se insertan varias filas con los valores de las estadísticas calculadas en los pasos anteriores. Cada fila tiene dos columnas: "KPI" y "TOTAL".
  3. Finalmente, el bloque de código se cierra con el END.

Al final solo nos quedaría seleccionar nuestra función y revisar en la tabla estadisticas que se hallan añadido los valores esperados:

No hay texto alternativo para esta imagen
No hay texto alternativo para esta imagen

Ahora ¿Qué tal si actualizamos nuestra tabla fuente y queremos de igual manera refrescar nuestra tabla estadisticas con estos nuevos KPI´s, bueno podríamos utilizar el concepto de trigger que ya hemos visto en otros artículos y nuestra nueva función quedaría así:

No hay texto alternativo para esta imagen
Primero borramos la función debido a que no se puede cambiar el tipo de valor de retorno de una función
No hay texto alternativo para esta imagen
No hay texto alternativo para esta imagen

Después creamos nuestro trigger, pero esta vez como queremos tener el resultado del total vamos a utilizar un AFTER INSERT para que primero me ingresen los valores a la tabla producto y después si me saque los KPI´s a mi tabla estadisitcas.

No hay texto alternativo para esta imagen

Por último vendría la prueba agregando un nuevo valor a mi tabla producto y verificando que las estadisticas hallan cambiado en dicha tabla:

No hay texto alternativo para esta imagen
No hay texto alternativo para esta imagen

¡Todo un exito! Espero que te haya servido un montón este artículo, si te gusto dale like y compártelo a aquella persona que le pueda servir.


ATT: Lucho castro

Sebastián López Acero

Ingeniero de Proyectos en Oil & Gas | Ingeniero Mecatrónico | Data Science Enthusiast

8 meses

Hola Lucho, y que tan optimo sera crear uno con BEFORE INSERT, en caso que queramos las estadísticas anteriores 🤔, seria necesario crear otra tabla?

Inicia sesión para ver o añadir un comentario.

Más artículos de Luis Felipe Castro Calderón

Otros usuarios han visto

Ver temas