Imagínate esto... Tienes una lista larguísima de compras del súper. Quieres saber cuánto gastaste al final. No vas a sumar todo a mano, ¿verdad? Pero los cajeros ya lo tienen todo en la base de datos. Por eso recibes el ticket con la suma correcta. Seguramente, en algún lugar de su app les ayuda la heroína de la lección de hoy — la función SUM()! Es una función agregada que te permite sumar valores en una columna de tipo numérico.
Sintaxis de SUM()
La función SUM() es tan simple como su nombre, pero vamos a desglosarla:
SELECT SUM(columna)
FROM tabla;
La función toma todos los valores de la columna indicada y los suma. Pero ojo: ¡aquí no hay magia para sumar textos o fechas! Solo números.
Ejemplos de uso de SUM()
Vamos a empezar con un ejemplo sencillo. Trabajaremos con la tabla salaries, que guarda los sueldos de los empleados:
| employee_id | salary |
|---|---|
| 1 | 50000 |
| 2 | 60000 |
| 3 | 55000 |
| 4 | 75000 |
Ejemplo 1: Sumar todos los sueldos
Quieres saber el fondo total de sueldos de la empresa. Así se hace:
SELECT SUM(salary) AS total_salary
FROM salaries;
Resultado:
| total_salary |
|---|
| 240000 |
¿Qué pasó aquí? PostgreSQL sumó todos los valores de la columna salary (50000 + 60000 + 55000 + 75000) y devolvió el resultado en una nueva columna llamada total_salary.
Ejemplo 2: Sumar con condición
Supón que quieres saber el total de sueldos solo de los empleados que ganan más de 55,000. Recordemos nuestro querido operador WHERE:
SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;
Resultado:
| high_salary_total |
|---|
| 135000 |
¿Qué pasó aquí? Primero, PostgreSQL aplicó el filtro WHERE salary > 55000, dejando solo las filas con sueldos de 60000 y 75000. Luego sumó esos dos sueldos (60000 + 75000).
3. Particularidades de SUM()
¿Cómo afecta NULL a SUM()? Como ya vimos, NULL es "nada", y SUM() no lo incluye en los cálculos. Mira esta tabla:
| employee_id | salary |
|---|---|
| 1 | 50000 |
| 2 | 60000 |
| 3 | NULL |
| 4 | 75000 |
Si queremos saber el fondo total de sueldos:
SELECT SUM(salary) AS total_salary
FROM salaries;
Resultado:
| total_salary |
|---|
| 185000 |
¿Por qué "185000" y no "NULL"? PostgreSQL simplemente ignora NULL al calcular la suma.
Ejemplos de consultas más complejas con SUM()
Ejemplo 1: Sumar y filtrar en una sola consulta
Imagina la tabla sales, que guarda datos de ventas. Así es su estructura:
| product_id | amount |
|---|---|
| 1 | 150 |
| 2 | 200 |
| 3 | NULL |
| 1 | 100 |
Quieres saber la suma total de ventas amount solo para el primer producto product_id = 1:
SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;
Resultado:
| total_sales |
|---|
| 150 |
Ejemplo 2: Suma y cálculos adicionales
Otra vez con la tabla salaries. Quieres saber cuánto supera el fondo de sueldos los 200,000:
SELECT SUM(salary) - 200000 AS surplus
FROM salaries;
Resultado:
| surplus |
|---|
| 40000 |
Errores típicos al usar SUM()
Usar SUM() con datos no numéricos: si por error intentas sumar, por ejemplo, valores de texto, te dará un error. Ten cuidado y revisa los tipos de datos de tu columna.
Ignorar NULL: muchos principiantes olvidan que NULL no se suma y creen que participa en los cálculos. Esto puede llevar a resultados inesperados.
GO TO FULL VERSION