# runningsum ❇️

La función runningsum es una función de ventana que devuelve el acumulado de un indicador desde el inicio del rango hasta cada fila.

Requiere la cláusula ORDER BY en la partición OVER.

Se puede usar tanto la sintaxis OVER del SQL estándar como la sintaxis compacta propia de Crono.

# Ejemplo

La siguiente consulta devuelve las ventas de cada mes y el acumulado desde el inicio de la historia.

select 
  year(fecha) anyo,
  month(fecha) mes,
  sum(unidades) ventas,
  runningsum(ventas order by anyo,mes)
from dbo.lb_ventas
group by all

La consulta SQL generada es:

SELECT
  year(fecha) AS anyo,
  month(fecha) AS mes,
  sum(unidades) AS ventas,
  sum(sum(unidades)) OVER (ORDER BY year(fecha),month(fecha) ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS expr4
FROM dbo.lb_ventas
GROUP BY
  year(fecha),
  month(fecha)

También se puede incluir la cláusula PARTITION BY. La siguiente consulta muestra las ventas de todos los meses de todos los años, incluyendo el acumulado desde el inicio de año.


select 
  year(fecha) anyo,
  month(fecha) mes,
  sum(unidades) ventas,
  runningsum(ventas partition by anyo order by mes)
from dbo.lb_ventas
group by all

El SQL generado es:

SELECT
  year(fecha) AS anyo,
  month(fecha) AS mes,
  sum(unidades) AS ventas,
  sum(sum(unidades)) OVER (PARTITION BY year(fecha) ORDER BY month(fecha) ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS expr4
FROM dbo.lb_ventas
GROUP BY
  year(fecha),
  month(fecha)