PostgreSQL prend en charge les opérateurs arithmétiques de base, dont la soustraction (-), pour différents types de données numériques.
Avant de continuer ta lecture, je voulais te parler de notre gestionnaire de base de données PostgreSQL moderne et rapide, Beekeeper Studio. Son éditeur SQL avec autocomplétion te permet de tester ces calculs en un clin d’œil, et il est gratuit pour PostgreSQL : télécharge-le ici.
Notre premier exemple est simple : soustraire deux entiers. Ça fonctionne dans toutes les bases de données SQL, pas seulement PostgreSQL.
SELECT 15 - 5 AS result;
Résultat attendu :
| result |
|---|
| 10 |
Soustraire des colonnes
Voyons maintenant comment soustraire une colonne d’une autre. Prenons un tableau de ventes sales avec la structure suivante :
| id | item | price | discount |
|---|---|---|---|
| 1 | A | 100 | 20 |
| 2 | B | 200 | 50 |
Tu veux obtenir le prix final après application de la remise. Il suffit de soustraire la remise du prix.
SELECT id, item, price - discount AS Final_Price FROM sales;
Résultat attendu :
| id | item | final_price |
|---|---|---|
| 1 | A | 80 |
| 2 | B | 150 |
Soustraire des dates
Dans PostgreSQL, soustraire des dates renvoie l’écart entre deux dates en jours.
Prenons un tableau rentals comme celui-ci :
| id | item | rent_start_date | rent_end_date |
|---|---|---|---|
| 1 | Bike | 2022-03-01 | 2022-03-10 |
| 2 | Car | 2022-02-20 | 2022-03-02 |
Calculer la durée des locations :
SELECT id, item, rent_end_date - rent_start_date as rental_duration FROM rentals;
Résultat attendu :
| id | item | rental_duration |
|---|---|---|
| 1 | Bike | 9 |
| 2 | Car | 10 |
Soustraction avec des timestamps
Dans PostgreSQL, soustraire des timestamps renvoie l’intervalle entre les deux.
Imaginons un tableau 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 |
Calculer la durée de chaque session :
SELECT id, logout_time - login_time as session_duration FROM logins;
Résultat attendu :
| id | session_duration |
|---|---|
| 1 | 02:30:00 |
| 2 | 02:30:00 |
Cas d’usage concrets
Gestion des stocks
Voici un exemple qui calcule le stock disponible pour chaque produit en soustrayant le nombre d’articles vendus du stock total.
Supposons qu’on ait un tableau d’inventaire structuré ainsi :
CREATE TABLE inventory (
product_id SERIAL PRIMARY KEY,
product_name VARCHAR(255),
total_stock INT,
sold INT
);
Données d’exemple :
INSERT INTO inventory (product_name, total_stock, sold) VALUES
('Product A', 100, 50),
('Product B', 200, 180),
('Product C', 150, 140);
Requête : calcul du stock disponible
SELECT product_id, product_name, total_stock - sold AS available_stock
FROM inventory;
Résultat attendu :
product_id | product_name | available_stock
------------+--------------+-----------------
1 | Product A | 50
2 | Product B | 20
3 | Product C | 10
Dans cette requête, on soustrait la quantité sold du total_stock pour obtenir le available_stock de chaque produit.
Calculer un âge
La fonction age de PostgreSQL calcule la différence entre deux dates et renvoie le résultat sous forme d’intervalle complexe incluant années, mois et jours.
Voici un cas concret où tu pourrais vouloir calculer l’âge des clients d’un tableau.
Supposons que tu aies un tableau customers avec une colonne birthdate.
SELECT customer_id, birthdate, age(current_date, birthdate) AS age
FROM customers;
Résultat attendu :
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
Conclusion
La soustraction dans PostgreSQL est un outil polyvalent qui s’applique aux nombres, aux dates et aux intervalles. Dans cet article, on a exploré les opérations de soustraction dans PostgreSQL, avec des nombres comme avec des dates. Pense toujours à vérifier les types de données et leur compatibilité avant tes calculs. Reste à l’écoute pour la suite de la série, où on creusera des concepts SQL plus avancés. Bon code !
D’autres articles qui pourraient te plaire :
- Comment formater des dates dans PostgreSQL
- Comment sélectionner uniquement les jours de semaine dans PostgreSQL
Beekeeper Studio est une interface PostgreSQL gratuite & open source
C’est le client PostgreSQL que je cherchais ! Son interface fait toute la différence : épurée, intuitive, puissante. Adieu le lourd PGAdmin. - David Cyprian
Beekeeper Studio est un client PostgreSQL rapide, intuitif et facile à utiliser. Il prend aussi en charge plein d’autres bases de données et fonctionne parfaitement sur Windows, Mac et Linux.
Ce que les utilisateurs de PostgreSQL disent de Beekeeper Studio
Contrairement à pgAdmin, Beekeeper est remarquablement simple à utiliser sans pour autant manquer de fonctionnalités, et le prix est juste ! La fonction de sauvegarde de base de données est particulièrement utile. Un super logiciel.
Outil fabuleux, l’IDE le plus pratique que j’ai trouvé jusqu’ici pour administrer des bases Postgres et MySql. Ça marche, tout simplement, sans prise de tête :-)