es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo seleccionar conteos acumulativos por grupo a lo largo del tiempo en postgres.

Tengo cuentas acumuladas para dos grupos en el tiempo en este formato:

Fecha Grupo Conteo Acumulado
1/1/2020 A 1
1/2/2020 A 3
1/2/2020 B 1
1/3/2020 B 2

Y me gustaría darle forma a estos datos en este formato:

Fecha Grupo Conteo Acumulado
1/1/2020 A 1
1/1/2020 B 0
1/2/2020 A 3
1/2/2020 B 1
1/3/2020 A 3
1/3/2020 B 2

Para que pueda mostrarse con precisión en un gráfico de área apilada en Metabase – ¿algún consejo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para darle la forma deseada a los datos, se puede utilizar la función de ventana SUM() de SQL/PostgreSQL con una cláusula PARTITION BY para calcular el conteo acumulativo de cada grupo en cada fecha. Luego, se puede unir con una tabla que liste todas las combinaciones únicas de fechas y grupos, rellenando los valores faltantes con 0. Aquí hay una consulta de ejemplo:

    WITH cum_counts AS (
      SELECT Fecha, Grupo, SUM("Conteo Acumulativo") OVER (PARTITION BY Grupo ORDER BY Fecha) AS Conteo_Acumulativo
      FROM tu_tabla
    )
    SELECT fechas.Fecha, grupos.Grupo, COALESCE(cum_counts.Conteo_Acumulativo, 0) AS Conteo_Acumulativo
    FROM (SELECT DISTINCT Fecha FROM tu_tabla) fechas
    CROSS JOIN (SELECT DISTINCT Grupo FROM tu_tabla) grupos
    LEFT JOIN cum_counts
    ON cum_counts.Fecha = fechas.Fecha AND cum_counts.Grupo = grupos.Grupo
    ORDER BY fechas.Fecha, grupos.Grupo;
    

    Esta consulta crea una expresión de tabla común (CTE) llamada cum_counts que calcula el conteo acumulativo de cada grupo en cada fecha utilizando la función de ventana SUM(). Luego, selecciona todas las fechas y grupos únicos utilizando DISTINCT y los combina para crear una tabla con todas las posibles combinaciones de fecha y grupo. Finalmente, une esa tabla con la tabla cum_counts, rellenando los valores faltantes con 0 utilizando COALESCE(), y ordena los resultados por fecha y grupo.

    Puede ejecutar esta consulta en su base de datos SQL/PostgreSQL y guardar los resultados como una nueva tabla, que luego puede conectar a Metabase y utilizar para crear un gráfico de área apilada que muestre con precisión los conteos acumulativos de cada grupo a lo largo del tiempo.

Comments are closed.