En MySQL, el SUM()
función agregada devuelve la suma de una expresión dada.
También se puede usar para devolver la suma de todos los valores distintos (únicos) en una expresión.
Sintaxis
La sintaxis es así:
SUM([DISTINCT] expr) [over_clause]
Datos de muestra
Supongamos que tenemos una tabla llamada Products
con los siguientes datos:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Resultado:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | NULL | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Ejemplo
Podemos usar la siguiente consulta para obtener la suma de todos los precios.
SELECT SUM(ProductPrice)
FROM Products;
Resultado:
389.70
Aquí, la información de precios se almacena en el ProductPrice
columna, y así lo pasamos como argumento a SUM()
función, que luego calcula la suma y devuelve el resultado.
Valores nulos
El SUM()
La función ignora cualquier valor NULL. En nuestra tabla de muestra anterior, el mazo tiene un valor NULO en su ProductPrice
columna, pero eso fue ignorado en el cálculo.
Resultados filtrados
El SUM()
opera en las filas devueltas por la consulta. Entonces, si filtra los resultados, la salida de SUM()
reflejará eso.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultado:
78.72
En este caso, 78,72 es la suma de todos los productos ofrecidos por el proveedor especificado.
El DISTINCT
Palabra clave
Puedes usar el DISTINCT
palabra clave con SUM()
para calcular sólo valores distintos. Es decir, si hay valores duplicados, se tratan como un solo valor.
Ejemplo:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Resultado:
363.71
Nuestra tabla contiene dos artículos con el mismo precio (el destornillador para zurdos y el destornillador para diestros tienen un precio de 25,99). El DISTINCT
La palabra clave da como resultado que ambos valores se traten como uno solo.
Funciones de ventana
Podemos usar un OVER
cláusula con SUM()
función para crear una función de ventana. Ver SQL SUM()
para principiantes para ver un ejemplo.