Cómo calcular la suma de filas combinando la función SUM con condiciones en SQL

La función SUM de SQL es una función agregada básica que se utiliza para sumar valores numéricos en una columna específica dentro de una base de datos. Sin embargo, no solo se puede utilizar para sumar números sin más, sino también para calcular sumas basadas en condiciones específicas. En este artículo, explicaremos en detalle cómo combinar la función SUM de SQL con condiciones para calcular la suma de filas, desde su uso básico hasta aplicaciones avanzadas. Esto permitirá mejorar la eficiencia y precisión de las consultas a la base de datos.

Índice

Uso básico de la función SUM

La función SUM se utiliza para sumar los valores de una columna especificada. La sintaxis básica es la siguiente:

SELECT SUM(column_name) FROM table_name;

Por ejemplo, si en la tabla sales hay una columna llamada amount y deseas calcular su suma total, lo harías de la siguiente manera:

SELECT SUM(amount) FROM sales;

Esta consulta devuelve la suma de todos los valores en la columna amount de la tabla sales. La función SUM actúa solo sobre una columna específica y omite los valores NULL.

Combinación de la cláusula WHERE con la función SUM

Al usar la cláusula WHERE, puedes calcular la suma basada en condiciones específicas. Esto permite sumar solo una parte del conjunto de datos que cumple con ciertos criterios.

Por ejemplo, si deseas calcular la suma de las ventas para un mes específico en la columna amount de la tabla sales, usarías la siguiente consulta:

SELECT SUM(amount) FROM sales WHERE month = '2023-05';

Esta consulta calcula la suma de los valores en la columna amount de las filas en las que la columna month coincide con ‘2023-05’. Agregar condiciones facilita obtener la suma de datos que cumplan con criterios específicos.

Uso de la cláusula GROUP BY con la función SUM

La cláusula GROUP BY permite agrupar datos y calcular la suma para cada grupo. De este modo, puedes obtener fácilmente el total de ventas por departamento o por mes, por ejemplo.

Por ejemplo, si en la tabla sales hay una columna llamada department y deseas calcular la suma de ventas por departamento, utilizarías la siguiente consulta:

SELECT department, SUM(amount) FROM sales GROUP BY department;

Esta consulta agrupa la tabla sales por la columna department y devuelve la suma de los valores de amount para cada departamento.

Además, si deseas calcular la suma de ventas por mes, lo harías de la siguiente manera:

SELECT month, SUM(amount) FROM sales GROUP BY month;

Esto te proporciona la suma de ventas por cada mes. El uso de la cláusula GROUP BY facilita la agregación y análisis de datos de manera más flexible.

Cálculo de sumas con condiciones usando la cláusula HAVING

La cláusula HAVING se utiliza para aplicar condiciones sobre los resultados agrupados por la cláusula GROUP BY. Esto permite filtrar los resultados de las sumas solo para los grupos que cumplan con una condición específica.

Por ejemplo, para obtener los departamentos cuya suma de ventas supera los 1000, la consulta sería:

SELECT department, SUM(amount) as total_sales  
FROM sales  
GROUP BY department  
HAVING SUM(amount) > 1000;

Esta consulta agrupa los datos por department y muestra solo aquellos cuyos totales de ventas superen los 1000.

Además, para obtener los meses cuyas ventas superen los 2000, puedes hacer lo siguiente:

SELECT month, SUM(amount) as total_sales  
FROM sales  
GROUP BY month  
HAVING SUM(amount) > 2000;

Usar la cláusula HAVING te permite filtrar aún más los resultados agregados, lo que facilita un análisis más detallado.

Combinación de la función SUM con la sentencia CASE

Al combinar la función SUM con la sentencia CASE, puedes realizar cálculos basados en condiciones más complejas. Con la sentencia CASE, es posible sumar valores solo cuando se cumplan ciertas condiciones.

Por ejemplo, si deseas sumar solo las ventas de un departamento específico en la tabla sales, podrías usar la siguiente consulta:

SELECT   
  SUM(CASE WHEN department = 'Electronics' THEN amount ELSE 0 END) AS electronics_sales,  
  SUM(CASE WHEN department = 'Clothing' THEN amount ELSE 0 END) AS clothing_sales  
FROM sales;

Esta consulta suma los valores de amount solo cuando el department es ‘Electronics’, y además calcula la suma de ventas para el departamento ‘Clothing’ en otra columna.

Si deseas calcular las ventas en función de un período específico, usarías una consulta como la siguiente:

SELECT   
  SUM(CASE WHEN month BETWEEN '2023-01' AND '2023-06' THEN amount ELSE 0 END) AS first_half_sales,  
  SUM(CASE WHEN month BETWEEN '2023-07' AND '2023-12' THEN amount ELSE 0 END) AS second_half_sales  
FROM sales;

Esta consulta suma las ventas del primer semestre y del segundo semestre de 2023, respectivamente.

La combinación de CASE con SUM te permite realizar agregaciones flexibles y manejar análisis de datos complejos.

Ejemplos prácticos

A continuación, se presentan algunos ejemplos prácticos de consultas SQL que combinan la función SUM con condiciones. Estos ejemplos te permitirán aplicar lo aprendido en operaciones reales sobre bases de datos.

Ejemplo 1: Suma total de ventas anuales por región

Para calcular la suma total de ventas anuales por región, usa la siguiente consulta:

SELECT   
  region,  
  SUM(amount) AS total_sales  
FROM sales  
WHERE year = 2023  
GROUP BY region;

Esta consulta agrupa los datos de la tabla sales por la columna region y calcula la suma de ventas para cada región en 2023.

Ejemplo 2: Suma de ventas mensuales y variación interanual

Para calcular la suma de ventas mensuales y la variación interanual, usa la siguiente consulta:

SELECT   
  month,  
  SUM(amount) AS total_sales,  
  SUM(CASE WHEN year = 2023 THEN amount ELSE 0 END) - SUM(CASE WHEN year = 2022 THEN amount ELSE 0 END) AS year_over_year_change  
FROM sales  
GROUP BY month;

Esta consulta calcula la suma total de ventas mensuales y la diferencia entre las ventas de 2023 y las de 2022 para cada mes.

Ejemplo 3: Suma y promedio de ventas por categoría de productos

Para calcular la suma y el promedio de ventas por categoría de productos, utiliza la siguiente consulta:

SELECT   
  category,  
  SUM(amount) AS total_sales,  
  AVG(amount) AS average_sales  
FROM sales  
GROUP BY category;

Esta consulta calcula la suma total de ventas y el promedio de ventas para cada categoría de productos.

Estos ejemplos prácticos te ayudarán a comprender cómo aplicar la combinación de la función SUM con condiciones para manejar operaciones reales en bases de datos.

Ejercicios de SQL

A continuación, presentamos algunos ejercicios de SQL para practicar el uso de la función SUM con condiciones. Estos te ayudarán a afianzar lo aprendido a través de la práctica.

Ejercicio 1: Suma de ventas mensuales para un producto específico

Completa la siguiente consulta SQL para calcular la suma de ventas mensuales para el producto con ID 101 en la tabla sales.

SELECT   
  month,  
  SUM(amount) AS total_sales  
FROM sales  
WHERE product_id = 101  
GROUP BY month;

Ejercicio 2: Suma total de ventas por región para un año específico

Escribe una consulta SQL que calcule la suma total de ventas por región para el año 2023 en la tabla sales.

SELECT   
  region,  
  SUM(amount) AS total_sales  
FROM sales  
WHERE year = 2023  
GROUP BY region;

Ejercicio 3: Lista de departamentos con ventas superiores a un umbral

Completa la siguiente consulta SQL para obtener una lista de los departamentos cuya suma total de ventas sea superior a 5000 en la tabla sales.

SELECT   
  department,  
  SUM(amount) AS total_sales  
FROM sales  
GROUP BY department  
HAVING SUM(amount) > 5000;

Ejercicio 4: Suma de ventas para un departamento específico en un periodo

Escribe una consulta SQL que calcule la suma de ventas del departamento Electronics para el primer semestre de 2023 (entre enero y junio).

SELECT   
  SUM(amount) AS total_sales  
FROM sales  
WHERE department = 'Electronics'   
AND month BETWEEN '2023-01' AND '2023-06';

Estos ejercicios te permitirán consolidar tu comprensión del uso de la función SUM con condiciones y te serán útiles en el análisis de datos.

Conclusión

La función SUM en SQL es una herramienta poderosa para calcular sumas de datos. Al combinarla con cláusulas como WHERE, GROUP BY, HAVING y CASE, puedes realizar agregaciones flexibles basadas en diversas condiciones. Aprovecha los ejemplos prácticos y ejercicios para afianzar tu comprensión desde los conceptos básicos hasta aplicaciones más avanzadas, y aplícalos en el análisis de datos para extraer información valiosa y apoyar la toma de decisiones.

Índice