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 calcular los cambios semana a semana en SQL?

Tengo una tabla de datos que tiene 3 columnas: Semana, Tipo y unidades. Quiero calcular los cambios semanales en unidades para cada Tipo, y la tabla de resultados será así:

Semana       Tipo   Unidades    Cambio
2020-12-01    A      10          null
2020-12-01    B      15          null
2020-12-01    C      20          null
2020-12-01    D      18          null
2020-12-08    A      20           10
2020-12-08    B      15            0
2020-12-08    C      25            5
2020-12-08    D      15           -3
...

Intenté usar la función lag pero fallé, tal vez porque estoy confundido sobre qué usar en partition by y order by. ¿Alguien puede ayudarme, por favor?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para calcular los cambios semana a semana en las unidades de cada Tipo, puede utilizar la función LAG con las cláusulas PARTITION BY y ORDER BY. Aquí hay un ejemplo de consulta SQL que logra el resultado deseado:

    SELECT Semana, Tipo, Unidades, Unidades - LAG(Unidades) OVER (PARTITION BY Tipo ORDER BY Semana) AS Cambio
    FROM miTabla
    

    La consulta anterior calcula la diferencia entre las unidades de la semana actual y las unidades de la semana anterior para cada Tipo, utilizando la función LAG. La cláusula PARTITION BY agrupa el cálculo por Tipo, y la cláusula ORDER BY determina el orden de las filas dentro de cada grupo de Tipo.

    Tenga en cuenta que para la primera semana de cada Tipo, la función LAG devolverá nulo para las unidades de la semana anterior. Esto se maneja en la salida de la consulta con el valor nulo en la columna Cambio de la primera semana en la tabla de resultados.

Comments are closed.