Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

PLPGSQL: Aplicado a data science

15/33
Recursos

Aportes 25

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

pandas hace lo mismo

Se me ocurre un dashboard para una tienda online, donde cada venta ejecutada dispare un trigger que actualice una función de clientes la cual alimenta algunos indicadores de ventas, cantidad de clientes y productos mas vendidos.

CREATE OR REPLACE FUNCTION movies_stats()
RETURNS VOID 
LANGUAGE plpgsql
AS $$
DECLARE
	total_rated_r REAL := 0.0;
	total_larger_thank_100 REAL := 0.0;
	total_published_2006 REAL := 0.0;
	average_duracion REAL := 0.0;
	average_rental_price REAL := 0.0;
BEGIN
	total_rated_r := COUNT(*) FROM peliculas WHERE clasificacion = 'R';
	total_larger_thank_100 := COUNT(*) FROM peliculas WHERE duracion > 100;
	total_published_2006 := COUNT(*) FROM peliculas WHERE anio_publicacion = 2006;
	average_duracion := AVG(duracion) FROM peliculas;
	average_rental_price := AVC(precio_renta) FROM peliculas;
	
	TRUNCATE TABLE peliculas_estadisticas;
	
	INSERT INTO peliculas_estadisticas (tipo_estadisticas, total)
	VALUES
		('Peliculas con clasificacion R', total_rate_r),
		('Peliculas de mas de 100 minutos', total_larger_than_100),
		('Peliculas publicadas en 2006', total_published_2006),
		('Promedio de duracion en minutos', average_duracion),
		('Precio promedio de renta', average_rental_price);
END
$$;

SELECT movies_stats();

SELECT * FROM peliculas_estadisticas;

Idea:
El hacer un mapa actualizado del COVID 19 por municipio en México, con las estadisticas del CINVESTAV.
Para tener mayor detalle de los contagios y muertes en México

TRUNCATE TABLE

¿Cuándo vale la pena mantener una tabla de estadísticas en lugar de ejecutar el query que genera el cálculo?

Se me ocurre presentar las ventas diarias y los movimientos de almacén que se consideren necesarios, para evaluar el stock de los productos.

En mi trabajo lo uso constantemente para chequear bugs de la base de datos y saber el estado de los mismos. Como herramienta es maravillosa.

En un tienda por descuento sería útil tener por ejemplo el top 10 de sku’s con mayor rotación, la categoría y linea de productos con mayor facturación, el ticket promedio de los clientes según rango de edades, los días y el horario de mayor facturación entre otros indicadores claves que podrían interesar al negocio.

Idea de uso:

Para el control estadistico y analisis de vendedores, que llevara lo siguiente:

  • Roles de vendedores
  • Vndedores estrella
  • Prospectos contactados
  • Prospectos convertidos a cliemtes
  • Origen de los prospectos (redes sociales, B2C, etc)
  • Porcentaje de bateo (cuantos prospectos convierten a clientes y cuantos de esos compran seguido)
  • Analizar zona de accion de los vemdedores
  • Procesos de venta
  • Timing de venta
    -Etc
    Para analizar cual es el patron de los mejores vendedores y muliplicar estrategias y buenas practicas

Reto

Se puede crear una función que permita calcular un KPI usando más de 1 entidad.

Se me ocurre que podemos generar un reporte de productividad donde me información sobre el desempeño de mi departamento. Cuantas faltas he tenido en promedio en los últimos 90 días, cuál ha sido la producción por día en ese lapso de tiempo, el tiempo muerto generado por día, algún indicador de productividad como OEE o AU, mi cumplimiento en producción, etc. Y si generaría un trigger ya que esta información debe ser insertada a diario en el sistema cada vez que termine un turno.

Aplicando las notas de las clases y retornando objetos json de nuestras estadisticas


DROP FUNCTION movies_stats();

create or replace function movies_stats()
returns json
language plpgsql
as $$
    DECLARE
        total_rated_r REAL := 0.0;
        total_larger_thank_100 REAL := 0.0;
        total_published_2006 REAL :=0.0;
        average_duracion REAL :=0.0;
        average_rental_prices REAL :=0.0;
        payload JSON;
    BEGIN
        total_rated_r := count(*) from peliculas where clasificacion = 'R';
        total_larger_thank_100 := count(*) from  peliculas where duracion > 100;
        total_published_2006 := count(*) from peliculas where anio_publicacion = '2006';
        average_duracion := avg(duracion) from peliculas;
        average_rental_prices := avg(precio_renta) from peliculas;

        TRUNCATE Table peliculas_estadisticas;
        Insert Into peliculas_estadisticas (tipo_estadistica, total)
        VALUES
               ('Películas con classification R',total_rated_r),
               ('Películas de más de 100 minutos',total_larger_thank_100),
               ('Películas publicadas en 2006',total_published_2006),
               ('Promedio de duración en minutos',average_duracion),
               ('Precio promedio de renta',average_rental_prices);

        -- Build the payload
        payload := json_build_object(
                'timestamp',CURRENT_TIMESTAMP,
                'total_rated_r',total_rated_r,
                'total_larger_thank_100',total_larger_thank_100,
                'total_published_2006',total_published_2006,
                'average_duracion',average_duracion,
                'average_rental_prices',average_rental_prices
            );

        return payload;
    END;
    $$;

select movies_stats();

Se me ocurre sumarle un Trigger y crear un tablero con reportes online de las ventas de una tienda o servicio.

Se que es la erplica de lo que ya ocurrio, pero bueno, metomo tiempo por corregir los pequeños errores que no me dejaba correr la funcion.

create or replace function movies_statics()
RETURNS VOID
LANGUAGE PlPGSQL
AS $$
DECLARE
total_rated_r REAL := 0.0;
total_larger_than_100 REAL := 0.0;
total_published_2016 REAL := 0.0;
average_duration REAL := 0.0;
average_rental_price REAL := 0.0;
BEGIN
total_rated_r := COUNT() FROM peliculas WHERE clasificacion = ‘R’;
total_larger_than_100 := COUNT(
) FROM peliculas WHERE duracion > 100;
total_published_2016 := COUNT(*) FROM peliculas WHERE anio_publicacion = 2006;
average_duration := avg(duracion) FROM peliculas;
average_rental_price := avg(precio_renta) FROM peliculas;

truncate table peliculas_estadisticas;

insert into peliculas_estadisticas (Tipo_estadistica, total)
VALUES
('PELICULAS RATED R',total_rated_r),
('MAS LARGAS DE 100 MIN',total_larger_than_100),
('TOTAL PUBLICADAS EN 2016',total_published_2016),
('DURACION PROMEDIO',average_duration),
('PRECIO DE ALQUILER PROMEDIO',average_rental_price);

END
$$;

SELECT movies_statics()

SELECT * FROM peliculas_estadisticas;

un dashboard que dependa de una tabla y esa tabla lo actualiza el triggger para ventas, almacenes, cantidad de población, nose toma de asistencia en las escuelas, etc

para mi caso la cantidad de vehiculos que tienen siniestros viales (choques) llevar ese record de que marca, que año, el genero que mas accidentes tienen

Entendido

Uh… pero calcular todo eso por cada entrada no ha de ser lo mejor. ¿Habrá alguna manera de hacer que se ejecute cada 10 o 20 entradas?

interesante

Muy buen ejercicio

promedio del tiempo de renta un automóvil, promedio del precio pagad o por los clientes por la renta de automóviles, sumatoria de cada clase de autos disponibles para la renta en cada punto de servicio.

Por ejemplo un dashboard donde se tengan las estadísticas de las sucursales y análisis de los NPS para cada una.

Sacar las estadísticas de un trimestre en ventas de una empresa, por líneas de productos.