sql >> Base de Datos >  >> RDS >> Sqlserver

Función SUMA () en SQL Server

En SQL Server, SUM() La función de agregado devuelve la suma de una expresión dada.

También se puede usar para devolver la suma de todos los valores distintos (únicos) en la expresión.

SUM() solo funciona en columnas numéricas. Los valores nulos se ignoran.

Sintaxis

La sintaxis es así:

SUM ( [ ALL | DISTINCT ] expression ) 

También se puede usar con un OVER cláusula:

SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)

Ejemplo

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       | Long Weight (blue)              | 14.75          |
| 1001       | Long Weight (green)             | 11.99          |
| 1002       | Sledge Hammer                   | 33.49          |
| 1003       | Chainsaw                        | 245.00         |
| 1003       | Straw Dog Box                   | NULL           |
| 1004       | Bottomless Coffee Mugs (4 Pack) | 9.99           |
| 1001       | Right handed screwdriver        | 25.99          |
+------------+---------------------------------+----------------+

Podemos usar la siguiente consulta para obtener la suma de todos los precios.

SELECT SUM(ProductPrice)
FROM Products;

Resultado:

367.20

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 los valores nulos al realizar su cálculo.

Si la columna contiene valores nulos, es posible que vea una advertencia que indica que se eliminaron los valores nulos.

Por ejemplo, aquí está la advertencia que recibí al ejecutar el ejemplo anterior:

SELECT SUM(ProductPrice)
FROM Products;

Resultado:

+--------------------+
| (No column name)   |
|--------------------|
| 367.20             |
+--------------------+
Warning: Null value is eliminated by an aggregate or other SET operation.

Resultados filtrados

El SUM() opera en las filas devueltas por la consulta. Entonces, si filtra los resultados, el resultado 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(ALL ProductPrice) AS "All",
    SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;

Resultado:

+--------+------------+
| All    | Distinct   |
|--------+------------|
| 367.20 | 341.21     |
+--------+------------+
Warning: Null value is eliminated by an aggregate or other SET operation.

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

El SUM() la función se puede usar con un OVER cláusula para crear una función de ventana. Ver SQL SUM() para principiantes para ver un ejemplo.