20th Jul 2022 Lectura de 6 minutos Explicación de la función SQL SUM() con 5 ejemplos prácticos Dorota Wdzięczna SQL aprender SQL SUM Índice Cómo empezar: Sintaxis de la función SUM Ejemplo 1: Uso de SUM() con una columna Ejemplo 2: Uso de SUM() con una expresión Ejemplo 3: Uso de SUM() con GROUP BY Ejemplo 4: Uso de SUM() con DISTINCT Ejemplo 5: Uso de SUM() con HAVING ¿Quiere probar su habilidad con la función SQL SUM()? Las funciones agregadas son una parte importante del conocimiento de SQL - y no hay mejor lugar para empezar a aprenderlas que con la función SUM(). En este artículo, puedes ampliar o refrescar tu SQL con 5 ejemplos prácticos de SUM(). SQL nos permite hacer algo más que seleccionar valores o expresiones de las tablas. La mayoría de las operaciones en bases de datos relacionales utilizan funciones de agregación como SUM() para realizar cálculos sobre los datos. Las funciones de agregación permiten calcular varias estadísticas para un grupo de filas. Puedes encontrar más información sobre ellas en el artículo Guía para principiantes sobre las funciones agregadas de SQL. La función SUM() suma todos los valores de una columna determinada o los valores devueltos por una expresión (que puede estar formada por números, valores de columna o ambos). Es una buena introducción a las funciones agregadas de SQL, así que vamos a entrar en materia. Cómo empezar: Sintaxis de la función SUM Esta es la sintaxis de la función SUM: SUM([DISTINCT] column_or_expression) Como ves, esta función requiere un solo argumento: un nombre de columna o una expresión. Los valores proporcionados en el argumento son sumados y devueltos por la función SUM(). La palabra clave DISTINCT es opcional; cuando se utiliza, SUM() sólo suma los valores que no se repiten. Explicaré más este tema en la siguiente sección. Primero, conozcamos los datos sobre los que construiremos nuestras consultas SQL SUM(). La tabla product almacena los datos que utilizaremos para calcular la suma de los valores dados. Aquí tienes una muestra de sus datos: idnamepricequantitycategory 1dress1201clothing 2T-shirt552clothing 3jacket6002clothing 4netbook2100NULLIT 5mouse24NULLIT 6bricks681toys 7wood mobile221toys 8teddy bear70NULLtoys Ejemplo 1: Uso de SUM() con una columna Si quieres sumar valores almacenados en una columna, utiliza SUM() con el nombre de esa columna como argumento. Observe el siguiente ejemplo: SELECT SUM(quantity) AS sum_quantity FROM product; En esta consulta, utilizamos SUM() solo en la sentencia SELECT. La función SUM() suma todos los valores de la columna quantity y devuelve el total como resultado de la función. El nombre de la nueva columna resultante (es decir, el alias) es sum_quantity. Este es el resultado: sum_quantity 7 Como ves, la suma de los valores de la columna quantity de la tabla product es 7. Si una de las filas tiene un NULL en esta columna, SUM() omite esta fila del cálculo. Observe que sólo hay una fila en el resultado: todas las filas individuales fueron "colapsadas" por SUM() - sus detalles no están disponibles en el resultado. Ejemplo 2: Uso de SUM() con una expresión A continuación, consideraremos un ejemplo que utiliza una expresión como argumento de SUM(). Esta es la consulta: SELECT SUM(quantity*price) AS total_value FROM product; Y el resultado que devuelve es: total_value 1520 En este caso, el argumento de la función SUM() es una expresión que calcula el valor total de cada producto: la cantidad del producto (el valor de la columna quantity) multiplicado por su precio (el valor de la columna precio). Los valores totales calculados para cada producto se suman y se devuelve el total general de sus valores; el total_sum es 1520, como puede ver en el resultado. Ejemplo 3: Uso de SUM() con GROUP BY Normalmente, se utiliza la función SUM con la cláusula GROUP BY. Con GROUP BY, los valores sumados se calculan para un grupo de filas. Si no está familiarizado con GROUP BY, le sugiero que lea Uso de GROUP BY en SQL o ¿Cómo funciona SQL GROUP BY? antes de continuar con este ejemplo. En la consulta de abajo, puede ver cuántos productos hay en cada categoría: SELECT category, SUM(quantity) AS total_quantity FROM product GROUP BY category; Y el resultado devuelto por esta consulta es: categorytotal_quantity clothing5 ITNULL toys2 En este caso, la columna de la categoría está en SELECT porque queremos ver la categoría para la que se calcula la suma. A continuación está la función SUM(), que suma los valores de las cantidades. Añadir la cláusula GROUP BY significa que los productos con el mismo valor en la columna de categoría se ponen en un grupo; la suma se calcula para cada grupo por separado. Por último, recuerde que la cláusula GROUP BY debe ir siempre después de FROM. Observe que para la categoría IT la suma calculada es NULL. Esto se debe a que todas las filas que tienen un valor "IT" en la columna de categoría tienen un NULL en la columna quantity. La categoría "juguetes" tiene un producto con un NULL en la columna de cantidad, por lo que se suman los valores restantes de esta categoría. Por supuesto, también puede agrupar registros y calcular sumas en más de una columna. Ejemplo 4: Uso de SUM() con DISTINCT La función SQL SUM() también puede sumar sólo valores únicos (es decir, que no se repiten). Para ello, utilice la función SUM con la palabra clave DISTINCT en el argumento. Por ejemplo: SELECT category, SUM(DISTINCT quantity) FROM product GROUP BY category; Y el resultado que devuelve: categorytotal_quantity clothing3 ITNULL toys2 Si observa la base de datos, verá que hay cinco artículos de ropa en stock: namequantitycategory dress1clothing T-shirt2clothing jacket2clothing Sin embargo, la consulta devuelve un 3 para la cantidad total de ropa en stock. ¿Por qué? Porque "2" aparece dos veces en la columna de cantidad de artículos de la categoría de ropa. Cuando se utiliza DISTINCT, se ignoran los valores repetidos en la columna. Tenga en cuenta que la palabra clave DISTINCT va primero en el argumento de la función, seguida del nombre de la columna o de la expresión. Ejemplo 5: Uso de SUM() con HAVING Puede utilizar SUM() en la cláusula HAVING como parte de los criterios de filtrado. Por ejemplo, en la siguiente consulta queremos que sólo aparezcan en el resultado las filas que superen una determinada cantidad: SELECT category, SUM(quantity) AS total_quantity FROM product GROUP BY category HAVING SUM(quantity)>2; Y el resultado: categorytotal_quantity clothing5 La consulta sólo devuelve una categoría: ropa. ¿Por qué? Porque la suma de la cantidad de productos debe ser superior a 2 para ser incluida en el resultado. La columna de ropa (con un total_quantity de 5) cumple este criterio. Las otras categorías no se muestran porque sus cantidades totales son inferiores a 2. ¿Quiere probar su habilidad con la función SQL SUM()? En este artículo, has aprendido cómo funciona la función SQL SUM(). Puedes utilizarla para sumar todos los valores de una columna en todas las filas de una tabla, para sumar los resultados de una expresión que utiliza más de una columna y para sumar los valores de un grupo de filas. También puedes utilizar SUM() dentro de la cláusula HAVING para filtrar los datos según los valores sumados. ¿Quiere saber más sobre SUM()? El artículo Cómo utilizar CASE WHEN con SUM() en SQL explica cómo utilizar SUM() con la expresión CASE WHEN. ¡Amplía tus conocimientos! Y si quieres poner a prueba tus conocimientos de SQL, nuestro Ejercicios prácticos de SQL es una buena opción. ¡Sigue aprendiendo y practicando SQL! Tags: SQL aprender SQL SUM