SQL

¿Cómo obtener el valor mínimo en SQL Server con la función SUM()?

Estrada Web Group
Administrador
¿Cómo obtener el valor mínimo en SQL Server con la función SUM()?

En este tutorial, aprenderás a usar la función SUM() de SQL Server para realizar la suma de valores de una columna.

La función SUM() de SQL Server es una función agregada que calcula la suma de todos los valores en una expresión.

La sintaxis de la función SUM() es la siguiente:

SUM([ALL | DISTINCT ] expression)

Detalles:

  •      ALL indica a la función SUM() que devuelva la suma de todos los valores, incluidos los duplicados. ALL se usa por defecto.
  •      DISTINCT ordena a la función SUM() que calcule la suma de los únicos valores distintos.
  •      Expresión es cualquier expresión válida que devuelve un valor numérico exacto o aproximado. Ten en cuenta que las funciones o subconsultas agregadas no se aceptan en la expresión.

La función SUM() ignora los valores NULL.

ALL vs DISTINCT

Creemos una nueva tabla para demostrar la diferencia entre ALL y DISTINCT y le insertamos unos valores:

CREATE TABLE t(
    val INT
);
INSERT INTO t(val)
VALUES(1),(2),(3),(3),(4),(NULL),(5);

SELECT
    val
FROM
    t;
val
-----------
1
2
3
3
4
NULL
5

(7 row(s) affected)

La siguiente instrucción devuelve la suma de todos los valores en la columna val:

SELECT
    SUM(val) total
FROM
    t;

Resultado:

total
-----------
18
Warning: Null value is eliminated by an aggregate or other SET operation.
(1 row affected)

Sin embargo, cuando usamos el modificador DISTINCT, la función SUM() devuelve la suma de solo valores únicos en la columna val:

SELECT
    SUM(DISTINCT val) total
FROM
    t;

Resultado:

Total
-----------
15
Warning: Null value is eliminated by an aggregate or other SET operation.
(1 row affected)

Ejemplos de funciones SUM() de SQL Server

Tomemos algunos ejemplos prácticos del uso de la función SUM() de SQL Server, tomando la base de datos de ejemplo que puedes descargar aquí.

A) Ejemplo simple de la función SUM() de SQL Server

La siguiente declaración devuelve las existencias totales de todos los productos en todas las tiendas:

SELECT
    SUM(quantity) total_stocks
FROM
    production.stocks;

Resultado:

total_stocks
------------
13511

(1 row affected)

B) Función SUM() de SQL Server con la cláusula GROUP BY

La siguiente declaración encuentra las existencias totales por ID de tienda utilizando Group By:

SELECT
    store_id,
    SUM(quantity) store_stocks
FROM
    production.stocks
GROUP BY
    store_id;

Resultado:

store_id    store_stocks
----------- ------------
1           4532
2           4359
3           4620

(3 row(s) affected)

En este ejemplo:

  •      Primero, la cláusula GROUP BY dividió las existencias por ID de tienda en grupos.
  •      En segundo lugar, la función SUM() se aplica a cada grupo para calcular las existencias totales de cada uno.

Si deseas mostrar el nombre de la tienda en lugar de la identificación de la tienda, puede usar la siguiente instrucción:

SELECT
    store_name,
    SUM(quantity) store_stocks
FROM
    production.stocks w
    INNER JOIN sales.stores s
        ON s.store_id = w.store_id
GROUP BY
    store_name;

Resultado:

store_name     store_stocks
-------        ------------
Baldwin Bikes    4359
Rowlett Bikes    4620
Santa Cruz Bikes 4532

(3 row(s) affected)

C) Función SUM() de SQL Server con la cláusula HAVING

La siguiente declaración busca las existencias de cada producto y solo devuelve productos cuyas existencias son superiores a 100:

SELECT
    product_name,
    SUM(quantity) total_stocks
FROM
    production.stocks s
    INNER JOIN production.products p
        ON p.product_id = s.product_id
GROUP BY
    product_name
HAVING
    SUM(quantity) > 100
ORDER BY
    total_stocks DESC;

Resultado:

product_name                        total_stocks
------------                         ------------
Electra Townie Original 7D - 2017    125
Electra Townie Balloon 8D EQ 
Ladies' - 2016/2017/2018             121
Electra Townie Go! 8i - 2017/2018    120
Electra Townie Commute 8D - 2018     119
Sun Bicycles Cruz 7 - 2017           115
Surly Straggler - 2018               109
Sun Bicycles Cruz 3 - 2017           109
Electra Townie Original 21D - 2018   109
Electra Girl's Hawaii 1 16" - 2017   107

(9 row(s) affected)

D) Función SUM() de SQL Server con ejemplo de expresión

El siguiente ejemplo utiliza una expresión en la función SUM() para calcular el valor neto de cada pedido de cliente:

SELECT
    order_id,
    SUM(
        quantity * list_price * (1 - discount)
    ) net_value
FROM
    sales.order_items
GROUP BY
    order_id
ORDER BY
    net_value DESC;

Resultado:

order_id    net_value
----------- ---------------
1541        29147.0264
937         27050.7182
1506        25574.9555
1482        25365.4344
1364        24890.6244
.
.
.

(1615 row(s) affected)

En este tutorial, has aprendido a usar la función SUM() de SQL Server para calcular la suma de valores.

Compartir artículo:

Más artículos geniales

¿Cómo unir o concatenar dos o más columnas separadas por un espacio en SQL con CONCAT_WS?

¿Cómo unir o concatenar dos o más columnas separadas por un espacio en SQL con CONCAT_WS?

En este tutorial, aprenderá a usar la función CONCAT_WS() de SQL Server para unir varias cadenas junto con un separador, esta función solo esta disponible en SQL Server 2017 en adelante.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla ;