SUM (Transact-SQL)

Devuelve la suma de todos los valores o sólo de los valores DISTINCT de la expresión. SUM sólo puede utilizarse con columnas numéricas. Los valores Null se pasan por alto. Puede ir seguida de la cláusula OVER.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

SUM ( [ ALL | DISTINCT ] expression )

Argumentos

  • ALL
    Aplica la función de agregado a todos los valores. ALL es el valor predeterminado.
  • DISTINCT
    Especifica que SUM devuelve la suma de los valores únicos.
  • expression
    Es una constante, columna o función y cualquier combinación de operadores aritméticos, bit a bit y de cadena. expression es una expresión de la categoría del tipo de datos numérico exacto o numérico aproximado, excepto para el tipo de datos bit. No se permiten funciones de agregado ni subconsultas. Para obtener más información, vea Expresiones (Transact-SQL).

Tipos de valor devueltos

Devuelve la suma de todos los valores de expression con el tipo de datos expression más preciso.

Resultado de la expresión Valor devuelto

Categoría integer

int

Categoría decimal (p, s)

decimal(38, s)

Categoría money y smallmoney

money

Categoría float y real

float

ms187810.note(es-es,SQL.90).gifImportante:
No se admiten agregados Distinct, por ejemplo AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name) y SUM(DISTINCT column_name) cuando se utilizan CUBE o ROLLUP. Si se utilizan, el SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) devuelve un mensaje de error y cancela la consulta.

Ejemplos

A. Utilizar SUM para agregados y agregados de filas

En estos ejemplos se muestran las diferencias entre las funciones de agregado y las funciones de agregado de filas. En el primero se muestran funciones de agregado que sólo ofrecen datos de resumen y en el segundo, funciones de agregado de filas que ofrecen datos de resumen y de detalle.

USE AdventureWorks;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
WHERE Color IS NOT NULL AND ListPrice != 0.00 AND Name LIKE 'Mountain%'
GROUP BY Color
ORDER BY Color;
GO

Éste es el conjunto de resultados.

Color                                 
--------------- --------------------- ---------------------
Black           27404.84              15214.9616
Silver          26462.84              14665.6792
White           19.00                 6.7926

(3 row(s) affected)

USE AdventureWorks;
GO
SELECT Color, ListPrice, StandardCost
FROM Production.Product
WHERE Color IS NOT NULL AND ListPrice != 0.00 AND Name LIKE 'Mountain%'
ORDER BY Color
COMPUTE SUM(ListPrice), SUM(StandardCost) BY Color;
GO

Éste es el conjunto de resultados.

Color           ListPrice             StandardCost
--------------- --------------------- ---------------------
Black           2294.99               1251.9813
Black           2294.99               1251.9813
Black           2294.99               1251.9813
Black           1079.99               598.4354
Black           1079.99               598.4354
Black           1079.99               598.4354
Black           1079.99               598.4354
Black           3374.99               1898.0944
Black           3374.99               1898.0944
Black           3374.99               1898.0944
Black           3374.99               1898.0944
Black           539.99                294.5797
Black           539.99                294.5797
Black           539.99                294.5797
Black           539.99                294.5797
Black           539.99                294.5797

sum                   sum
--------------------- ---------------------
27404.84              15214.9616

Color           ListPrice             StandardCost
--------------- --------------------- ---------------------
Silver          2319.99               1265.6195
Silver          2319.99               1265.6195
Silver          2319.99               1265.6195
Silver          3399.99               1912.1544
Silver          3399.99               1912.1544
Silver          3399.99               1912.1544
Silver          3399.99               1912.1544
Silver          769.49                419.7784
Silver          769.49                419.7784
Silver          769.49                419.7784
Silver          769.49                419.7784
Silver          564.99                308.2179
Silver          564.99                308.2179
Silver          564.99                308.2179
Silver          564.99                308.2179
Silver          564.99                308.2179

sum                   sum
--------------------- ---------------------
26462.84              14665.6792

Color           ListPrice             StandardCost
--------------- --------------------- ---------------------
White           9.50                  3.3963
White           9.50                  3.3963

sum                   sum
--------------------- ---------------------
19.00                 6.7926

(37 row(s) affected)

B. Calcular totales de grupo con más de una columna

En el siguiente ejemplo se calcula la suma de ListPrice y StandardCost por cada color que aparece en la tabla Product.

USE AdventureWorks;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color
GO

Éste es el conjunto de resultados.

Color                                 
--------------- --------------------- ---------------------
NULL            4182.32               2238.4755
Black           67436.26              38636.5002
Blue            24015.66              14746.1464
Grey            125.00                51.5625
Multi           478.92                272.2542
Red             53274.10              32610.7661
Silver          36563.13              20060.0483
Silver/Black    448.13                198.97
White           36.98                 13.5172
Yellow          34527.29              21507.6521

(10 row(s) affected)

Vea también

Referencia

Funciones de agregado (Transact-SQL)
OVER (cláusula de Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005