Introducción
Hoy vamos a ver cómo hacer restas en MySQL, una plataforma popular para administrar bases de datos relacionales. Este tutorial se enfoca en la resta en MySQL y cubre distintos escenarios, desde operaciones aritméticas básicas hasta casos más complejos, como calcular diferencias entre filas o fechas.
Nota: aunque muchos conceptos de SQL aplican en distintos sistemas de gestión de bases de datos, los ejemplos de este artículo están diseñados específicamente para MySQL.
Antes de seguir leyendo, quiero contarte sobre nuestro cliente moderno de MySQL, Beekeeper Studio. Su editor SQL con autocompletado hace que probar estos cálculos sea rapidísimo, y es gratis para MySQL: descárgalo aquí.
Requisitos previos
Este tutorial supone que ya conoces MySQL. Asegúrate de tener MySQL instalado y acceso a una base de datos donde puedas ejecutar consultas.
Sección 1: Operaciones aritméticas básicas en MySQL
Restar números
MySQL admite operadores aritméticos básicos directamente en la sentencia SELECT. Así puedes hacer una resta sencilla:
SELECT 15 - 7 AS difference;
Resultado esperado
+------------+
| difference |
+------------+
| 8 |
+------------+
Esta consulta resta 7 a 15 y etiqueta el resultado como difference.
Esta es la forma más sencilla de restar en MySQL. El operador ‘-‘ sirve para restar números directamente o para restar valores numéricos guardados en distintas columnas de una tabla.
Restar columnas
Para restar dos columnas de una tabla de MySQL, imagina una tabla llamada financials con las columnas revenue y expenses.
SELECT revenue, expenses, (revenue - expenses) AS net_income FROM financials;
Resultado esperado:
+---------+----------+------------+
| revenue | expenses | net_income |
+---------+----------+------------+
| 10000 | 7000 | 3000 |
| 15000 | 12000 | 3000 |
+---------+----------+------------+
Esta consulta calcula el ingreso neto restando expenses a revenue.
Sección 2: Trabajar con fechas
Restar fechas
En MySQL, restar fechas sirve para calcular intervalos, como el número de días entre dos fechas. Para esto, MySQL ofrece la función DATEDIFF().
SELECT DATEDIFF('2023-12-31', '2023-01-01') AS days_difference;
Resultado esperado:
+-----------------+
| days_difference |
+-----------------+
| 364 |
+-----------------+
DATEDIFF() devuelve el número de días entre dos fechas, algo muy útil en cálculos financieros y de personal.
Restar intervalos de tiempo
MySQL te permite restar intervalos de tiempo específicos a fechas con la función DATE_SUB(). Así puedes restar 30 días a una fecha específica:
SELECT DATE_SUB('2023-12-31', INTERVAL 30 DAY) AS new_date;
Resultado esperado:
+------------+
| new_date |
+------------+
| 2023-12-01 |
+------------+
Sección 3: Técnicas avanzadas de resta
Calcular totales acumulados
Para mostrar un cálculo de total acumulado que incluye restas, supongamos una tabla de registro llamada transactions con las columnas id, date y amount.
SET @running_total := 0;
SELECT
id,
date,
amount,
(@running_total := @running_total - amount) AS running_total
FROM transactions
ORDER BY date;
Resultado esperado:
+----+------------+--------+---------------+
| id | date | amount | running_total |
+----+------------+--------+---------------+
| 1 | 2023-01-01 | 500 | -500 |
| 2 | 2023-01-02 | 150 | -650 |
+----+------------+--------+---------------+
Esta consulta usa una variable de sesión para llevar el total acumulado, restando secuencialmente el monto de cada transacción.
Resta en MySQL con valores NULL
Recuerda que MySQL trata NULL como un valor desconocido. Si incluyes NULL en una resta, el resultado también será NULL. Para resolverlo, puedes usar la función COALESCE.
SELECT COALESCE(column1, 0) - COALESCE(column2, 0) AS 'result' FROM table_name;
Cuando column1 o column2 contienen NULL, la función COALESCE lo trata como ‘0’, así la resta sigue devolviendo un resultado preciso.
Conclusión
En SQL, no todas las operaciones son tan simples como parecen, y la resta es una de ellas. El mejor enfoque cambia según si restas números, columnas, fechas o haces cálculos más avanzados.
Practica estos escenarios por tu cuenta y experimenta con otras tablas y nombres de columnas.
¡Sigue explorando, sigue aprendiendo!
Para consultas más complejas y aplicaciones reales, sigue explorando la amplia documentación y funcionalidad de MySQL.
Beekeeper Studio es una GUI para MySQL gratuita y de código abierto
Últimamente he usado Beekeeper Studio para mi trabajo con MySQL y rápidamente se convirtió en una de mis herramientas de bases de datos favoritas. La interfaz es limpia, moderna y sin distracciones, así que es fácil concentrarse en las consultas sin el desorden que tienen otras herramientas. - Surendra Singh
Beekeeper Studio es un cliente de MySQL rápido, intuitivo y fácil de usar. También es compatible con muchísimas otras bases de datos y funciona de maravilla en Windows, Mac y Linux.
Lo que dicen los usuarios de MySQL sobre Beekeeper Studio
Elegí este programa después de años usando phpMyAdmin; se siente como entrar a un mundo de mayor calidad. Aquí de verdad sentí que se preocupan por el usuario. El concepto, la implementación, la experiencia práctica: le estoy sinceramente agradecido a Matthew por todo.
Herramienta fabulosa, el IDE más práctico que he encontrado hasta ahora para administrar bases de datos Postgres y MySql: simplemente funciona, sin complicaciones :-)