Πώς να χρησιμοποιήσετε τη συνάρτηση ORDER BY στη SQL
Η εντολή ORDER BY της SQL σάς επιτρέπει να ταξινομήσετε τα αποτελέσματα αναζήτησης ανάλογα με τις προσωπικές σας ανάγκες, είτε σε αύξουσα είτε σε φθίνουσα σειρά. Η ταξινόμηση των δεδομένων στον πίνακα προορισμού σε σειρές και στήλες μπορεί να κάνει τα αποτελέσματά σας πιο σαφή και ευανάγνωστα. Αυτό, με τη σειρά του, βελτιστοποιεί και επιταχύνει τις αναλύσεις δεδομένων και τα ερωτήματά σας σε σύνθετα σύνολα δεδομένων.
Τι είναι το SQL ORDER BY;
Μπορείτε να χρησιμοποιήσετε την εντολή SQL ORDER BY για να ταξινομήσετε δεδομένα και αποτελέσματα από απλά ή σύνθετα σύνολα δεδομένων. Η εντολή αυτή σας επιτρέπει να καθορίσετε τον τρόπο με τον οποίο τα δεδομένα θα ταξινομηθούν στον πίνακα προορισμού. Επιπλέον, μπορείτε να ορίσετε αν τα δεδομένα θα ταξινομηθούν κατά αύξουσα ή φθίνουσα σειρά. Έτσι, ORDER BY συμβάλλει στην παροχή αποτελεσμάτων ερωτημάτων που είναι σαφή και ευανάγνωστα.
Από προεπιλογή, ORDER BY εμφανίζει τα αποτελέσματα σε αύξουσα σειρά, δηλαδή από το Α έως το Ω ή από τη μικρότερη προς τη μεγαλύτερη τιμή. Αν προτιμάτε τα αποτελέσματα σε φθίνουσα σειρά, μπορείτε να χρησιμοποιήσετε την προαιρετική λέξη-κλειδί DESC. Μπορείτε να ορίσετε μία ή περισσότερες στήλες προορισμού για τα αποτελέσματα.
Η SQL ORDER BY είναι σημαντική για την εκτέλεση οργανωμένων και γρήγορων ερωτημάτων. Χρησιμοποιείται συχνά σε συνδυασμό με τις εντολές SELECT, WHERE και άλλους τελεστές και συναρτήσεις της SQL, όπως η GROUP BY.
Θέλετε να κατανοήσετε καλύτερα τη γλώσσα SQL, αλλά δεν ξέρετε από πού να ξεκινήσετε; Η εισαγωγή μας στη γλώσσα SQL με παραδείγματα σας διευκολύνει να ξεκινήσετε την εκμάθηση αυτής της δημοφιλούς γλώσσας βάσεων δεδομένων.
Ποια είναι η σύνταξη της SQL ORDER BY;
Η σύνταξη της SQL ORDER BY έχει την εξής μορφή:
SELECT ColumnA, ColumnB, … or *
FROM Table
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlΑν εισαγάγετε μόνο μία στήλη μετά ORDER BY, θα λάβετε μία στήλη με ταξινομημένα αποτελέσματα. Αν εισαγάγετε περισσότερες από μία στήλες, τα αποτελέσματα θα ταξινομηθούν με βάση τη Στήλη Α. Αν η Στήλη Α περιέχει πανομοιότυπες καταχωρήσεις σε ορισμένες σειρές, αυτές οι σειρές θα ταξινομηθούν με βάση τη Στήλη Β.
Μπορείτε να επεκτείνετε αυτή τη σύνταξη με επιπλέον τελεστές και παραμέτρους. Μια ρήτρα WHERE, για παράδειγμα, μπορεί να χρησιμοποιηθεί για τον καθορισμό κριτηρίων που περιορίζουν τα αποτελέσματα της αναζήτησής σας. Η σύνταξη του ORDER BY σε συνδυασμό με WHERE έχει την εξής μορφή:
SELECT ColumnA, ColumnB, … or *
FROM Table
WHERE ColumnA = 'SearchCondition'
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlΜπορείτε επίσης να χρησιμοποιήσετε τις ακόλουθες παραμέτρους:
SELECT: Μπορείτε να χρησιμοποιήσετε τη συντακτική δομή SELECT για να καθορίσετε ποια δεδομένα θέλετε να αναλύσετε. Χρησιμοποιήστε τον αστερίσκο*για να ανακτήσετε ολόκληρο το σύνολο δεδομένων ή πληκτρολογήστε τα ονόματα των στηλών για να εργαστείτε με αυτές τις στήλες.FROM: Καθορίζει από ποιον πίνακα θέλετε να αναζητήσετε δεδομένα.WHERE: Το WHERE είναι μια προαιρετική ρήτρα για τον καθορισμό κριτηρίων αναζήτησης που θα περιορίσουν τα αποτελέσματά σας. Μέσα σε μια ρήτραWHEREμπορείτε να χρησιμοποιήσετε τελεστές όπως=, LIKE ή NOT.ORDER BY: Καθορίζει σε ποια στήλη θέλετε να ταξινομήσετε τα αποτελέσματά σας. Εάν δεν προσθέσετεASCήDESC, τα αποτελέσματα θα ταξινομηθούν από προεπιλογή σε αύξουσα σειρά.
Ανάλογα με τη βάση δεδομένων, ORDER BY ταξινομεί τις τιμές NULL αυτόματα ή σύμφωνα με την επιλεγμένη σειρά ταξινόμησης. Στις βάσεις δεδομένων SQLite, MySQL και SQL Server, οι τιμές NULL αντιμετωπίζονται ως οι χαμηλότερες τιμές. Αυτό σημαίνει ότι εμφανίζονται στην αρχή των αποτελεσμάτων κατά αύξουσα σειρά. Στις βάσεις δεδομένων Oracle και PostgreSQL, οι τιμές NULL αντιμετωπίζονται ως οι υψηλότερες τιμές. Επομένως, εμφανίζονται στο τέλος των αποτελεσμάτων κατά αύξουσα σειρά.
Σε ποιες εφαρμογές μπορεί να χρησιμοποιηθεί το SQL ORDER BY;
Ακολουθούν μερικές πρακτικές εφαρμογές του SQL ORDER BY:
- Ταξινόμηση των πληροφοριών προϊόντων με βάση το όνομα, την κατηγορία ή την τιμή του προϊόντος
- Ταξινόμηση συναλλαγών με βάση το ποσό, την ημερομηνία ή το όνομα
- Ταξινόμηση παραγγελιών με βάση το ποσό ή τις αξιολογήσεις
- Ταξινόμηση υπαλλήλων με βάση το μισθό, τις συμβάσεις, την απόδοση ή το τμήμα
- Κατάλογος αποθεμάτων με βάση το ποσό ή το όνομα
- Ταξινόμηση αποστολών με βάση τον ταχυδρομικό κώδικα ή τον αριθμό παρακολούθησης
- Ταξινόμηση λιστών πελατών ανά περιοχή ή ηλικία
Παραδείγματα SQL ORDER BY
Θα δούμε τώρα 3 παραδείγματα με το ORDER BY.
Ταξινόμηση προϊόντων με βάση την τιμή
Σε αυτό το παράδειγμα, θα ταξινομήσουμε τα προϊόντα της κατηγορίας «Μαλλιά» σε αύξουσα σειρά με βάση την τιμή. Χρησιμοποιούμε FROM και WHERE για να καθορίσουμε ποια προϊόντα θέλουμε να ταξινομήσουμε. Με ORDER BY και ASC, καθορίζουμε ότι θέλουμε να τα ταξινομήσουμε σε αύξουσα σειρά με βάση την τιμή. Η σύνταξη έχει ως εξής:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlΦιλτράρισμα πελατών
Ας υποθέσουμε ότι εργάζεστε σε έναν πίνακα με το όνομα «Πελάτες» και θέλετε να ταξινομήσετε όλους τους πελάτες από το Ηνωμένο Βασίλειο με βάση το όνομά τους. Θέλετε να τους ταξινομήσετε σε αντίστροφη αλφαβητική σειρά, από το Ζ στο Α, οπότε προσθέτετε DESC στην εντολή ORDER BY.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlΤαξινόμηση βάσει πολλαπλών κατηγοριών
Σε αυτό το παράδειγμα, θέλετε να ταξινομήσετε τα προϊόντα της κατηγορίας «Ηλεκτρονικά» με βάση την ποσότητα της παραγγελίας. Σε περίπτωση που οι ποσότητες των παραγγελιών είναι ίδιες, θέλετε να ταξινομήσετε τα προϊόντα με βάση τη χώρα προέλευσης της παραγγελίας.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlΥπάρχουν εναλλακτικές λύσεις για το SQL ORDER BY;
Δεν υπάρχουν εναλλακτικές λύσεις για ORDER BY στη SQL με την ίδια λειτουργία. Ωστόσο, η εντολή GROUP BY χρησιμοποιείται συχνά σε συνδυασμό με ORDER BY. GROUP BY μπορεί να χρησιμοποιηθεί για την ομαδοποίηση εγγραφών βάσει κατηγοριών, ενώ ORDER BY μπορεί επιπλέον να ταξινομήσει αυτές τις εγγραφές.
Ένα παράδειγμα: Ας υποθέσουμε ότι θέλετε να ομαδοποιήσετε τις ποσότητες παραγγελιών των πελατών ανά χώρα και στη συνέχεια να χρησιμοποιήσετε τη συνάρτηση συγκέντρωσης AVG για να τις ταξινομήσετε με βάση τη μέση ποσότητα παραγγελίας. Η σύνταξη για αυτό θα έχει ως εξής:
SELECT Country, AVG(OrderQuantity)
FROM Customers
WHERE Category = 'Electronics'
GROUP BY Country
ORDER BY AVG(OrderQuantity) ASC;sqlΜπορείτε επίσης να χρησιμοποιήσετε μια ρήτρα HAVING για να φιλτράρετε τις ταξινομημένες εγγραφές με βάση κριτήρια και συνθήκες αναζήτησης. LIMIT μπορεί να χρησιμοποιηθεί για να περιορίσετε το σύνολο των αποτελεσμάτων σε έναν συγκεκριμένο αριθμό.