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.

Suma acumulada de los últimos 12 meses

Quiero escribir una consulta que devuelva la suma de los últimos 12 meses de registros para el total de empleados. Intenté esta consulta a continuación, pero devuelve valores incorrectos. Para el 2021P11 quiero que la salida muestre la suma de todos los empleados que están en la columna “term_employees” retrocediendo hasta 2020P12, que es 12 períodos anteriores.

¿Hay alguna manera de obtener esto?

select os1.end_date,os1.year_period, os1.employee_position, sum(os1.term_employees) as total
from output_staging as os1
inner join output_staging as os2
    on os1.end_date > os2.start_date_11_periods_prior
    and os1.entity_id = os2.entity_id
    and os1.employee_position = os2.employee_position
group by 1,2,3
order by 1 desc;
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para recuperar la suma de los últimos 12 meses de registros de empleados totales, puedes modificar la consulta de la siguiente manera:

    SELECT os1.end_date, os1.year_period, os1.employee_position, 
    SUM(os2.term_employees) AS total
    FROM output_staging AS os1
    INNER JOIN output_staging AS os2 ON os2.end_date BETWEEN DATEADD(month, -12, os1.end_date) AND os1.end_date
        AND os1.entity_id = os2.entity_id
        AND os1.employee_position = os2.employee_position
    WHERE os1.year_period = '2021P11'
    GROUP BY 1,2,3
    ORDER BY 1 DESC;
    

    Esta consulta une la tabla consigo misma y filtra los registros dentro de los últimos 12 meses a partir de la fecha de finalización del registro actual utilizando la cláusula BETWEEN. La cláusula WHERE limita la salida al período 2021P11, y la función SUM ahora utiliza os2.term_employees para recuperar el número total de empleados dentro del período de 12 meses.

Comments are closed.