PostgreSQL admite los operadores aritméticos básicos, incluida la resta (-), para varios tipos de datos numéricos.
Antes de seguir leyendo, quiero contarte sobre nuestro gestor de bases de datos PostgreSQL moderno y rápido, Beekeeper Studio. Su editor SQL con autocompletado hace que probar estos cálculos sea muy rápido, y es gratis para PostgreSQL. Descárgalo aquí.
Nuestro primer ejemplo es sencillo: restar dos enteros. Esto funciona en todas las bases de datos basadas en SQL, no solo en PostgreSQL.
SELECT 15 - 5 AS result;
Resultado esperado:
| result |
|---|
| 10 |
Restar columnas
Ahora veamos cómo restar una columna de otra. Considera una tabla de ventas sales con la siguiente estructura:
| id | item | price | discount |
|---|---|---|---|
| 1 | A | 100 | 20 |
| 2 | B | 200 | 50 |
Quieres obtener el costo final después de aplicar el descuento. Puedes lograrlo restando el descuento del precio.
SELECT id, item, price - discount AS Final_Price FROM sales;
Resultado esperado:
| id | item | final_price |
|---|---|---|
| 1 | A | 80 |
| 2 | B | 150 |
Restar fechas
Restar fechas en PostgreSQL devuelve la diferencia entre dos fechas en días.
Considera la siguiente tabla rentals:
| id | item | rent_start_date | rent_end_date |
|---|---|---|---|
| 1 | Bike | 2022-03-01 | 2022-03-10 |
| 2 | Car | 2022-02-20 | 2022-03-02 |
Calcula la duración de las rentas:
SELECT id, item, rent_end_date - rent_start_date as rental_duration FROM rentals;
Resultado esperado:
| id | item | rental_duration |
|---|---|---|
| 1 | Bike | 9 |
| 2 | Car | 10 |
Resta con timestamps
En PostgreSQL, restar timestamps da como resultado el intervalo entre ambos.
Imagina que tenemos una tabla logins:
| id | login_time | logout_time |
|---|---|---|
| 1 | 2022-03-15 08:00:00 | 2022-03-15 10:30:00 |
| 2 | 2022-03-15 07:30:00 | 2022-03-15 10:00:00 |
Calcula la duración de cada sesión:
SELECT id, logout_time - login_time as session_duration FROM logins;
Resultado esperado:
| id | session_duration |
|---|---|
| 1 | 02:30:00 |
| 2 | 02:30:00 |
Casos de uso prácticos
Gestión de inventario
Este es un ejemplo de cómo calcular el stock disponible de cada producto restando la cantidad de artículos vendidos del stock total.
Supongamos que tenemos una tabla de inventario con esta estructura:
CREATE TABLE inventory (
product_id SERIAL PRIMARY KEY,
product_name VARCHAR(255),
total_stock INT,
sold INT
);
Datos de ejemplo:
INSERT INTO inventory (product_name, total_stock, sold) VALUES
('Product A', 100, 50),
('Product B', 200, 180),
('Product C', 150, 140);
Consulta: cálculo del stock disponible
SELECT product_id, product_name, total_stock - sold AS available_stock
FROM inventory;
Resultado esperado:
product_id | product_name | available_stock
------------+--------------+-----------------
1 | Product A | 50
2 | Product B | 20
3 | Product C | 10
En esta consulta, restamos la cantidad sold de total_stock para obtener el available_stock de cada producto.
Calcular la edad
La función age de PostgreSQL sirve para calcular la diferencia entre dos fechas y devuelve el resultado como un tipo interval complejo que incluye años, meses y días.
Aquí tienes un caso práctico en el que podrías querer calcular la edad de los clientes de una tabla.
Supongamos que tienes una tabla customers con una columna birthdate.
SELECT customer_id, birthdate, age(current_date, birthdate) AS age
FROM customers;
Resultado esperado:
customer_id | birthdate | age
-------------+------------+----------------------
1 | 1990-04-25 | 34 years 3 mons 12 days
2 | 1985-10-12 | 38 years 9 mons 24 days
3 | 2000-01-01 | 24 years 7 mons 5 days
Conclusión
La resta en PostgreSQL es una herramienta versátil que puedes aplicar a números, fechas e intervalos. En este artículo exploramos las operaciones de resta en PostgreSQL, tanto con números como con fechas. Recuerda siempre revisar los tipos de datos y asegurarte de que sean compatibles al hacer cálculos. No te pierdas los próximos artículos de la serie, donde profundizaremos en conceptos avanzados de SQL. ¡Feliz programación!
Otros artículos que te pueden gustar:
Beekeeper Studio es una GUI de PostgreSQL gratuita y de código abierto
¡Este es el cliente de PostgreSQL que estaba buscando! La interfaz es lo que lo distingue: limpia, intuitiva y potente. Adiós al torpe PGAdmin. - David Cyprian
Beekeeper Studio es un cliente de PostgreSQL rápido, intuitivo y fácil de usar. También es compatible con muchas otras bases de datos y funciona de maravilla en Windows, Mac y Linux.
Lo que dicen los usuarios de PostgreSQL sobre Beekeeper Studio
A diferencia de pgAdmin, Beekeeper es increíblemente fácil de usar sin quedarse corto en funciones, ¡y a buen precio! La función de respaldo de bases de datos es especialmente útil. Simplemente un gran software.
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 :-)