Η PostgreSQL υποστηρίζει τους βασικούς αριθμητικούς τελεστές, συμπεριλαμβανομένης της αφαίρεσης (-), για διάφορους αριθμητικούς τύπους δεδομένων.
Πριν συνεχίσεις το διάβασμα, ήθελα απλώς να σου πω για τον σύγχρονο και γρήγορο διαχειριστή βάσεων δεδομένων PostgreSQL μας, το Beekeeper Studio. Ο SQL editor του με αυτόματη συμπλήρωση κάνει τη δοκιμή αυτών των υπολογισμών γρήγορη, και είναι δωρεάν για PostgreSQL. Κατέβασέ το εδώ.
Το πρώτο μας παράδειγμα είναι απλό: αφαίρεση δύο ακεραίων. Αυτό λειτουργεί σε όλες τις βάσεις δεδομένων που βασίζονται στην SQL, όχι μόνο στην PostgreSQL.
SELECT 15 - 5 AS result;
Αναμενόμενο αποτέλεσμα:
| result |
|---|
| 10 |
Αφαίρεση στηλών
Τώρα ας δούμε πώς αφαιρείς μια στήλη από μια άλλη. Πάρε για παράδειγμα έναν πίνακα πωλήσεων sales με την εξής δομή:
| id | item | price | discount |
|---|---|---|---|
| 1 | A | 100 | 20 |
| 2 | B | 200 | 50 |
Θέλεις να βρεις το τελικό κόστος μετά την έκπτωση. Μπορείς να το πετύχεις αφαιρώντας την έκπτωση από την τιμή.
SELECT id, item, price - discount AS Final_Price FROM sales;
Αναμενόμενο αποτέλεσμα:
| id | item | final_price |
|---|---|---|
| 1 | A | 80 |
| 2 | B | 150 |
Αφαίρεση ημερομηνιών
Η αφαίρεση ημερομηνιών στην PostgreSQL επιστρέφει τη διαφορά μεταξύ δύο ημερομηνιών σε ημέρες.
Πάρε για παράδειγμα τον πίνακα rentals:
| id | item | rent_start_date | rent_end_date |
|---|---|---|---|
| 1 | Ποδήλατο | 2022-03-01 | 2022-03-10 |
| 2 | Αυτοκίνητο | 2022-02-20 | 2022-03-02 |
Υπολόγισε τη διάρκεια των ενοικιάσεων:
SELECT id, item, rent_end_date - rent_start_date as rental_duration FROM rentals;
Αναμενόμενο αποτέλεσμα:
| id | item | rental_duration |
|---|---|---|
| 1 | Ποδήλατο | 9 |
| 2 | Αυτοκίνητο | 10 |
Αφαίρεση με timestamps
Στην PostgreSQL, η αφαίρεση timestamps δίνει το χρονικό διάστημα (interval) μεταξύ τους.
Ας υποθέσουμε ότι έχουμε έναν πίνακα 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 |
Υπολόγισε τη διάρκεια κάθε συνεδρίας:
SELECT id, logout_time - login_time as session_duration FROM logins;
Αναμενόμενο αποτέλεσμα:
| id | session_duration |
|---|---|
| 1 | 02:30:00 |
| 2 | 02:30:00 |
Πρακτικές περιπτώσεις χρήσης
Διαχείριση αποθέματος
Ακολουθεί ένα παράδειγμα υπολογισμού του διαθέσιμου αποθέματος για κάθε προϊόν, αφαιρώντας τον αριθμό των πωληθέντων τεμαχίων από το συνολικό απόθεμα.
Ας υποθέσουμε ότι έχουμε έναν πίνακα αποθέματος με την εξής δομή:
CREATE TABLE inventory (
product_id SERIAL PRIMARY KEY,
product_name VARCHAR(255),
total_stock INT,
sold INT
);
Δείγμα δεδομένων:
INSERT INTO inventory (product_name, total_stock, sold) VALUES
('Product A', 100, 50),
('Product B', 200, 180),
('Product C', 150, 140);
Query: Υπολογισμός διαθέσιμου αποθέματος
SELECT product_id, product_name, total_stock - sold AS available_stock
FROM inventory;
Αναμενόμενο αποτέλεσμα:
product_id | product_name | available_stock
------------+--------------+-----------------
1 | Product A | 50
2 | Product B | 20
3 | Product C | 10
Σε αυτό το query, αφαιρούμε την ποσότητα sold από το total_stock για να πάρουμε το available_stock κάθε προϊόντος.
Υπολογισμός ηλικίας
Η συνάρτηση age στην PostgreSQL υπολογίζει τη διαφορά μεταξύ δύο ημερομηνιών και επιστρέφει το αποτέλεσμα ως σύνθετο τύπο interval που περιλαμβάνει χρόνια, μήνες και ημέρες.
Ακολουθεί μια πρακτική περίπτωση όπου ίσως θέλεις να υπολογίσεις την ηλικία των πελατών σε έναν πίνακα.
Ας υποθέσουμε ότι έχεις έναν πίνακα customers με μια στήλη birthdate.
SELECT customer_id, birthdate, age(current_date, birthdate) AS age
FROM customers;
Αναμενόμενο αποτέλεσμα:
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
Συμπέρασμα
Η αφαίρεση στην PostgreSQL είναι ένα ευέλικτο εργαλείο που εφαρμόζεται σε αριθμούς, ημερομηνίες και intervals. Σε αυτό το άρθρο εξερευνήσαμε τις πράξεις αφαίρεσης στην PostgreSQL, τόσο με αριθμούς όσο και με ημερομηνίες. Θυμήσου να ελέγχεις πάντα τους τύπους δεδομένων και να εξασφαλίζεις τη συμβατότητά τους όταν κάνεις υπολογισμούς. Μείνε συντονισμένος για τα επόμενα της σειράς, όπου θα εμβαθύνουμε σε πιο προχωρημένες έννοιες της SQL. Καλό coding!
Άλλα άρθρα που μπορεί να σου αρέσουν:
Το Beekeeper Studio είναι ένα δωρεάν & open source GUI για PostgreSQL
Αυτός είναι ο PostgreSQL client που έψαχνα! Το UI είναι αυτό που τον ξεχωρίζει: καθαρό, διαισθητικό, ισχυρό. Αντίο στο δυσκίνητο PGAdmin. - David Cyprian
Το Beekeeper Studio είναι ένας γρήγορος, διαισθητικός και εύχρηστος PostgreSQL client. Υποστηρίζει επίσης πολλές άλλες βάσεις δεδομένων και λειτουργεί άψογα σε Windows, Mac και Linux.
Τι λένε οι χρήστες της PostgreSQL για το Beekeeper Studio
Σε αντίθεση με το pgAdmin, το Beekeeper είναι εντυπωσιακά απλό στη χρήση χωρίς να του λείπουν δυνατότητες – και η τιμή είναι σωστή! Η λειτουργία backup της βάσης δεδομένων είναι ιδιαίτερα χρήσιμη. Απλώς εξαιρετικό λογισμικό.
Φανταστικό εργαλείο, το πιο πρακτικό IDE που έχω βρει μέχρι σήμερα για διαχείριση βάσεων Postgres και MySql - απλώς δουλεύει, χωρίς φασαρία :-)