O PostgreSQL suporta os operadores aritméticos básicos, incluindo a subtração (-), para vários tipos de dados numéricos.
Antes de continuar lendo, queria apresentar o nosso gerenciador de banco de dados PostgreSQL moderno e rápido, o Beekeeper Studio. O editor SQL com autocompletar torna rápido testar esses cálculos, e ele é gratuito para PostgreSQL. Baixe aqui.
Nosso primeiro exemplo é simples: subtrair dois inteiros. Isso funciona em todos os bancos de dados baseados em SQL, não apenas no PostgreSQL.
SELECT 15 - 5 AS result;
Saída esperada:
| result |
|---|
| 10 |
Subtraindo colunas
Agora, vamos ver como subtrair uma coluna de outra. Considere uma tabela de vendas sales com a seguinte estrutura:
| id | item | price | discount |
|---|---|---|---|
| 1 | A | 100 | 20 |
| 2 | B | 200 | 50 |
Você quer encontrar o custo final após a aplicação do desconto. Para isso, basta subtrair o desconto do preço.
SELECT id, item, price - discount AS Final_Price FROM sales;
Saída esperada:
| id | item | final_price |
|---|---|---|
| 1 | A | 80 |
| 2 | B | 150 |
Subtraindo datas
Subtrair datas no PostgreSQL retorna a diferença entre duas datas em dias.
Considere a tabela rentals a seguir:
| id | item | rent_start_date | rent_end_date |
|---|---|---|---|
| 1 | Bike | 2022-03-01 | 2022-03-10 |
| 2 | Car | 2022-02-20 | 2022-03-02 |
Calcule a duração dos aluguéis:
SELECT id, item, rent_end_date - rent_start_date as rental_duration FROM rentals;
Saída esperada:
| id | item | rental_duration |
|---|---|---|
| 1 | Bike | 9 |
| 2 | Car | 10 |
Subtração com timestamps
No PostgreSQL, subtrair timestamps retorna o intervalo entre dois timestamps.
Imagine que temos uma tabela 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 |
Calcule a duração de cada sessão:
SELECT id, logout_time - login_time as session_duration FROM logins;
Saída esperada:
| id | session_duration |
|---|---|
| 1 | 02:30:00 |
| 2 | 02:30:00 |
Casos de uso práticos
Gestão de estoque
Veja um exemplo de como calcular o estoque disponível de cada produto subtraindo a quantidade de itens vendidos do estoque total.
Suponha que temos uma tabela de estoque com a seguinte estrutura:
CREATE TABLE inventory (
product_id SERIAL PRIMARY KEY,
product_name VARCHAR(255),
total_stock INT,
sold INT
);
Dados de exemplo:
INSERT INTO inventory (product_name, total_stock, sold) VALUES
('Product A', 100, 50),
('Product B', 200, 180),
('Product C', 150, 140);
Consulta: calculando o estoque disponível
SELECT product_id, product_name, total_stock - sold AS available_stock
FROM inventory;
Saída esperada:
product_id | product_name | available_stock
------------+--------------+-----------------
1 | Product A | 50
2 | Product B | 20
3 | Product C | 10
Nesta consulta, subtraímos a quantidade sold de total_stock para obter o available_stock de cada produto.
Calculando idade
A função age do PostgreSQL é usada para calcular a diferença entre duas datas, retornando o resultado como um tipo interval complexo que inclui anos, meses e dias.
Veja um caso de uso prático em que você pode querer calcular a idade dos clientes de uma tabela.
Suponha que você tenha uma tabela customers com uma coluna birthdate.
SELECT customer_id, birthdate, age(current_date, birthdate) AS age
FROM customers;
Saída esperada:
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
Conclusão
A subtração no PostgreSQL é uma ferramenta versátil que pode ser aplicada a números, datas e intervalos. Neste artigo, exploramos as operações de subtração no PostgreSQL, lidando tanto com números quanto com datas. Lembre-se de sempre verificar os tipos de dados e garantir a compatibilidade ao realizar cálculos. Fique de olho nos próximos artigos da série, em que vamos nos aprofundar em conceitos avançados de SQL. Bom código!
Outros artigos que você pode gostar:
O Beekeeper Studio é uma GUI para PostgreSQL gratuita e open source
Este é o cliente PostgreSQL que eu estava procurando! A interface é o que o diferencia: limpa, intuitiva e poderosa. Adeus, PGAdmin desajeitado. - David Cyprian
O Beekeeper Studio é um cliente PostgreSQL rápido, intuitivo e fácil de usar. Ele também suporta vários outros bancos de dados e funciona muito bem no Windows, Mac e Linux.
O que os usuários de PostgreSQL dizem sobre o Beekeeper Studio
Diferente do pgAdmin, o Beekeeper é incrivelmente simples de usar, sem deixar a desejar em recursos – e o preço é justo! O recurso de backup do banco de dados é especialmente útil. Simplesmente um ótimo software.
Ferramenta fabulosa, a IDE mais prática que encontrei até hoje para administrar bancos Postgres e MySql - simplesmente funciona, sem complicação :-)