Η αφαίρεση δεν είναι μόνο για αριθμητικές πράξεις! Ο SQL Server έχει αρκετές ενσωματωμένες συναρτήσεις και τελεστές που βοηθούν στην αφαίρεση τόσο αριθμών όσο και ημερομηνιών. Επιπλέον, αντίθετα με το χαρτί και το μολύβι, πρέπει πάντα να σκεφτόμαστε το NULL. Ας ξεκινήσουμε με μερικά παραδείγματα.
Κατανόηση των πράξεων αφαίρεσης στον SQL Server
Οι πράξεις αφαίρεσης στον SQL Server χρησιμοποιούνται συνήθως σε δύο περιπτώσεις: σε αριθμητικές πράξεις με αριθμητικά δεδομένα και στον χειρισμό τιμών datetime. Συχνά θα δεις ότι η αφαίρεση τιμών είναι χρήσιμη όταν χρειάζεσαι υπολογισμένες τιμές απευθείας μέσα στον SQL Server.
Βασική αφαίρεση
Ας ξεκινήσουμε με μια απλή πράξη αφαίρεσης για να γίνει κατανοητή η ιδέα. Ας υποθέσουμε ότι έχουμε έναν πίνακα με όνομα “Orders” που περιέχει τα “TotalAmount” και “DiscountAmount”.
SELECT TotalAmount, DiscountAmount,
TotalAmount - DiscountAmount AS ActualAmount
FROM Orders;
Σε αυτό το βασικό παράδειγμα, αφαιρούμε το “DiscountAmount” από το “TotalAmount” και εμφανίζουμε το αποτέλεσμα ως “ActualAmount”.
Πράξεις αφαίρεσης σε χρονικά διαστήματα
Η αφαίρεση χρησιμοποιείται επίσης συχνά για τον υπολογισμό της διαφοράς μεταξύ δύο τιμών datetime. Ο SQL Server έχει αρκετούς τύπους ημερομηνίας και ώρας: smalldatetime, datetime, datetime2, datetimeoffset. Μπορούμε να χρησιμοποιήσουμε τη συνάρτηση DATEDIFF() για την αφαίρεση ημερομηνιών.
Παράδειγμα:
SELECT OrderID, OrderDate,
DATEDIFF(day, OrderDate, GETDATE()) AS DaysElapsed
FROM Orders;
Αυτή η εντολή υπολογίζει και εμφανίζει πόσες ημέρες έχουν περάσει από τη στιγμή που καταχωρήθηκε κάθε παραγγελία μέχρι σήμερα (η GETDATE επιστρέφει τη σημερινή ημερομηνία).
Συγκεντρωτικά αποτελέσματα με αφαίρεση στον SQL Server
Η συγκέντρωση αποτελεσμάτων με χρήση αφαίρεσης είναι επίσης αρκετά συνηθισμένη στον SQL Server. Για παράδειγμα, μπορεί να χρειαστεί να αθροίσεις τις συνολικές πωλήσεις μιας περιόδου και να αφαιρέσεις τις συνολικές εκπτώσεις της ίδιας περιόδου.
Παράδειγμα:
SELECT
( SELECT SUM(TotalAmount) FROM Orders where OrderDate like '2022-%' ) -
( SELECT SUM(DiscountAmount) FROM Orders where OrderDate like '2022-%' ) as NetSales
Η παραπάνω εντολή εμφανίζει τις καθαρές πωλήσεις για το 2022, αφαιρώντας τις συνολικές εκπτώσεις από τις συνολικές πωλήσεις.
Χειρισμός του NULL
Στον SQL Server, η αφαίρεση από NULL επιστρέφει τιμή NULL. Είναι σημαντικό να χειρίζεσαι αυτές τις περιπτώσεις για να αποφύγεις απροσδόκητα NULL στα αποτελέσματά σου, αν προτιμάς να αντιμετωπίζεις το NULL όπως το 0. Αυτό δεν ισχύει πάντα, οπότε κινήσου με σύνεση.
SELECT OrderID,
ISNULL(TotalAmount, 0) - ISNULL(DiscountAmount, 0) AS NetAmount
FROM Orders;
Τώρα είσαι pro στην αφαίρεση
Υπάρχουν κι άλλοι τρόποι για να αφαιρείς αποτελεσματικά τιμές στον SQL Server, οπότε συνέχισε να πειραματίζεσαι με αυτές τις εντολές και εξερεύνησε περισσότερα μόνος σου. Κάθε query που γράφεις σε φέρνει ένα βήμα πιο κοντά στην πλήρη εξοικείωση με τον SQL Server. Καλά queries!
Αυτό το άρθρο γράφτηκε με γνώμονα τον SQL Server. Επομένως, όλες οι εντολές και οι εξηγήσεις αφορούν τον SQL Server. Για το πώς μπορεί να λειτουργούν αυτές οι εντολές σε άλλες μηχανές βάσεων δεδομένων, συμβουλέψου την επίσημη τεκμηρίωση της αντίστοιχης βάσης δεδομένων.
Το Beekeeper Studio είναι ένα δωρεάν & open source GUI για βάσεις δεδομένων
Το καλύτερο εργαλείο για SQL queries & επεξεργασία που έχω χρησιμοποιήσει ποτέ. Μου δίνει ό,τι χρειάζομαι για να διαχειρίζομαι τη βάση δεδομένων μου. - ⭐⭐⭐⭐⭐ Mit
Το Beekeeper Studio είναι γρήγορο, εύχρηστο και κατανοητό με την πρώτη ματιά. Υποστηρίζει πάρα πολλές βάσεις δεδομένων και δουλεύει άψογα σε Windows, Mac και Linux.
Τι λένε οι χρήστες για το Beekeeper Studio
«Το Beekeeper Studio αντικατέστησε πλήρως την παλιά μου ροή εργασίας με SQL. Είναι γρήγορο, εύχρηστο και κάνει τη δουλειά με βάσεις δεδομένων ξανά ευχάριστη.»
«Έχω δοκιμάσει πολλά GUI για βάσεις δεδομένων, αλλά το Beekeeper πετυχαίνει την τέλεια ισορροπία ανάμεσα σε λειτουργίες και απλότητα. Απλώς δουλεύει.»