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?
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áusulaPARTITION 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: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 ventanaSUM()
. Luego, selecciona todas las fechas y grupos únicos utilizandoDISTINCT
y los combina para crear una tabla con todas las posibles combinaciones de fecha y grupo. Finalmente, une esa tabla con la tablacum_counts
, rellenando los valores faltantes con 0 utilizandoCOALESCE()
, 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.