total
La función total es una función de ventana que devuelve la suma de todos los registros del rango.
Es una función con OVER implícito, es decir, si no se especifica la partición se asume OVER ()
Se puede usar tanto la sintaxis OVER del SQL estándar como la sintaxis compacta propia de Crono.
Ejemplo
Sección titulada «Ejemplo»La siguiente consulta devuelve las ventas de cada mes y el total del año filtrado.
select year(fecha) año, month(fecha) mes, sum(unidades) ventas, total(ventas)from dbo.lb_ventaswhere año=2012group by allLa consulta SQL generada es:
SELECT year(fecha) AS [año], month(fecha) AS mes, sum(unidades) AS ventas, sum(sum(unidades)) OVER () AS expr4FROM dbo.lb_ventasWHERE year(fecha)=2012GROUP BY year(fecha), month(fecha)También se puede incluir la cláusula PARTITION BY. En este caso el comportamiento de total es exactamente igual que el de sum. La siguiente consulta muestra las ventas de todos los meses de todos los años, incluyendo el total de cada año.
select year(fecha) anyo, month(fecha) mes, sum(unidades) ventas, pct(ventas partition by anyo) pctfrom dbo.lb_ventasgroup by allEl SQL generado es:
SELECT year(fecha) AS [año], month(fecha) AS mes, sum(unidades) AS ventas, sum(sum(unidades)) OVER (PARTITION BY year(fecha)) AS expr4FROM dbo.lb_ventasGROUP BY year(fecha), month(fecha)Comentarios
Sección titulada «Comentarios»La única diferencia entre sum y total es que total tiene la cláusula OVER implícita.