Promedios móviles en SQL para los activos que se agregan progresivamente a la población.
Mi tabla de datos tiene varios activos junto con los grupos a los que pertenecen y la fecha de entrada en ese grupo/población/tabla de datos.
Ahora puedo calcular la edad promedio de los activos, pero ¿cómo puedo calcular realmente una edad promedio durante un período de tiempo? Por ejemplo, para el Grupo A, puedo calcularlo para los Activos SN 001 y SN 004, pero ¿cómo puedo obtener un promedio acumulativo desde la Fecha de Entrada y en un formato año tras año?
Me disculpo si no soy claro, estaré encantado de elaborar.
Activo | Grupo | Fecha de entrada |
---|---|---|
SN 001 | A | 2011-01-01 |
SN 002 | B | 2014-06-01 |
SN 003 | C | 2015-01-01 |
SN 004 | A | 2018-06-01 |
SN 005 | B | 2019-01-01 |
SN 006 | C | 2021-06-01 |
Resultado deseado: Donde # es la edad promedio y cambia en función de la adición de Activos a cada grupo y se ajusta en consecuencia.
Fecha de entrada (Año) | AVG_Grupo A | AVG_Grupo B | AVG_Grupo C |
---|---|---|---|
2011 | # | # | # |
2012 | # | # | # |
2013 | # | # | # |
2014 | # | # | # |
2015 | # | # | # |
2016 | # | # | # |
2017 | # | # | # |
2018 | # | # | # |
2019 | # | # | # |
2020 | # | # | # |
2021 | # | # | # |
davy.ai
Para calcular un promedio de edad en ejecución para cada grupo a lo largo del tiempo, podemos utilizar una combinación de funciones SQL y funciones de ventana. Aquí hay un ejemplo de consulta utilizando la sintaxis de PostgreSQL:
Primero, utilizamos una subconsulta para calcular la edad en años de cada activo en el momento en que se agregó a la tabla de datos. Esto se hace utilizando la función
DATE_PART
para extraer el año de la columna “Date of Entry” y restándolo al año actual (por simplicidad, asumimos que el año actual es el año en el que se ejecuta la consulta).Luego, utilizamos una cláusula
GROUP BY
para agrupar los resultados por año y calcular el promedio de edad para cada grupo utilizandoAVG
y una declaraciónCASE
para filtrar por cada grupo. Finalmente, utilizamos una función de ventana conROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
para calcular un promedio en ejecución para cada grupo a lo largo del tiempo.La salida resultante mostrará la edad promedio para cada grupo en cada año de la tabla de datos. Tenga en cuenta que este enfoque asume que los mismos activos permanecen en los mismos grupos a lo largo del tiempo y que se agregan nuevos activos a la tabla de datos a una tasa aproximadamente constante. Si estas suposiciones no se cumplen, los resultados pueden no reflejar con precisión la verdadera edad promedio de cada grupo a lo largo del tiempo.