Η ενασχόληση με διπλότυπες τιμές στην SQL μπορεί να είναι μια περίπλοκη εργασία. Αλλά μην φοβάστε, αυτός ο οδηγός είναι εδώ για να ελαφρύνει το βάρος σας.
Τα δεδομένα διατίθενται σε όλα τα σχήματα και τις μορφές, αλλά οι διπλές εγγραφές αποτελούν εξέχον μέρος κάθε μορφής δεδομένων. Είτε ασχολείστε με δεδομένα που βασίζονται στον ιστό είτε απλώς περιηγείστε σε ένα φορτηγό με δεδομένα πωλήσεων, η ανάλυσή σας θα παραμορφωθεί εάν έχετε διπλότυπες τιμές.
Χρησιμοποιείτε SQL για να συμπυκνώσετε τους αριθμούς σας και να εκτελέσετε μεγάλα ερωτήματα στις στοίβες δεδομένων σας; Εάν ναι, τότε αυτός ο οδηγός για τη διαχείριση των διπλότυπων SQL θα είναι μια απόλυτη απόλαυση για εσάς.
Ακολουθούν μερικοί διαφορετικοί τρόποι που μπορείτε να χρησιμοποιήσετε για να διαχειριστείτε διπλότυπα χρησιμοποιώντας SQL.
1. Καταμέτρηση διπλότυπων με χρήση ομάδας ανά συνάρτηση
Η SQL είναι μια πολύπλευρη γλώσσα προγραμματισμού που προσφέρει διάφορες λειτουργίες για την απλοποίηση των υπολογισμών. Εάν έχετε αρκετή εμπειρία με τις συναρτήσεις συγκέντρωσης στην SQL, ίσως να είστε ήδη εξοικειωμένοι με
ομάδα ανά συνάρτηση και σε τι μπορεί να χρησιμοποιηθεί.ο ομάδα από η λειτουργία είναι ένα από τα τις πιο βασικές εντολές SQL, το οποίο είναι ιδανικό για την αντιμετώπιση πολλαπλών εγγραφών, καθώς μπορείτε να χρησιμοποιήσετε διαφορετικές συναρτήσεις συγκεντρωτικών στοιχείων όπως άθροισμα, μετρώ, μέση τιμή, και πολλά άλλα σε συνδυασμό με το ομάδα από συνάρτηση για να καταλήξετε σε μια ξεχωριστή τιμή σειρών.
Ανάλογα με το σενάριο, μπορείτε να βρείτε διπλότυπα με το ομάδα από λειτουργία μέσα σε μία στήλη και πολλές στήλες.
ένα. Μετρήστε διπλότυπα σε μια στήλη
Ας υποθέσουμε ότι έχετε τον ακόλουθο πίνακα δεδομένων με δύο στήλες: Αναγνωριστικό προϊόντος και Παραγγελίες.
Αναγνωριστικό προϊόντος |
Παραγγελίες |
2 |
7 |
2 |
8 |
2 |
10 |
9 |
6 |
10 |
1 |
10 |
5 |
12 |
5 |
12 |
12 |
12 |
7 |
14 |
1 |
14 |
1 |
47 |
4 |
47 |
4 |
Για να βρείτε διπλότυπα αναγνωριστικά προϊόντων, μπορείτε να χρησιμοποιήσετε το ομάδα από λειτουργία και το έχοντας ρήτρα για το φιλτράρισμα των συγκεντρωτικών τιμών, ως εξής:
επιλέγω παραγωγικό, μετρώ(παραγωγικό) όπως και Total_count
από το sahil.product_dups
ομάδα ανά παραγωγικό
έχοντας πλήθος (παραγωγικό) > 1
Παραγγελία ανά productid?
Όπως συμβαίνει με μια τυπική δήλωση SQL, πρέπει να ξεκινήσετε ορίζοντας τις στήλες που θέλετε να εμφανίζονται στο τελικό αποτέλεσμα. Σε αυτήν την περίπτωση, θέλουμε να εμφανίσουμε τον αριθμό των διπλότυπων τιμών εντός του Αναγνωριστικό προϊόντος στήλη.
Στο πρώτο τμήμα, ορίστε το Αναγνωριστικό προϊόντος στήλη εντός του επιλέγω δήλωση. ο μετρώ η λειτουργία ακολουθεί το Αναγνωριστικό προϊόντος αναφορά έτσι ώστε η SQL να κατανοεί τον σκοπό του ερώτημά σας.
Στη συνέχεια, ορίστε τον πίνακα προέλευσης χρησιμοποιώντας το από ρήτρα. Από μετρώ είναι μια συνάρτηση συγκέντρωσης, πρέπει να χρησιμοποιήσετε το ομάδα από συνάρτηση για ομαδοποίηση όλων των παρόμοιων τιμών.
Θυμηθείτε, η ιδέα είναι να παραθέσετε τις διπλότυπες τιμές μέσα στο Αναγνωριστικό προϊόντος στήλη. Για να το κάνετε αυτό, πρέπει να φιλτράρετε τις τιμές μέτρησης και εμφάνισης που εμφανίζονται περισσότερες από μία φορές στη στήλη. ο έχοντας Ο όρος φιλτράρει τα συγκεντρωτικά δεδομένα. μπορείτε να χρησιμοποιήσετε τη συνθήκη, δηλ. μέτρηση (παραγωγικό) >1, για να εμφανίσετε τα επιθυμητά αποτελέσματα.
Τέλος, το Ταξινόμηση κατά Ο όρος ταξινομεί τα τελικά αποτελέσματα σε αύξουσα σειρά.
Η έξοδος είναι η εξής:
σι. Μετρήστε διπλότυπα σε πολλές στήλες
Όταν θέλετε να μετρήσετε διπλότυπα σε πολλές στήλες, αλλά δεν θέλετε να γράψετε πολλά ερωτήματα SQL, μπορείτε να επεκτείνετε τον παραπάνω κώδικα με μερικές τροποποιήσεις. Για παράδειγμα, εάν θέλετε να εμφανίσετε διπλότυπες σειρές σε πολλές στήλες, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα:
επιλέγω παραγωγικό, παραγγελίες, μετρώ(*) όπως και Total_count
από το sahil.product_dups
ομάδα ανά productid, παραγγελίες
έχοντας πλήθος (παραγωγικό) > 1
Παραγγελία ανά productid?
Στην έξοδο, θα παρατηρήσετε ότι εμφανίζονται μόνο δύο σειρές. Όταν τροποποιείτε το ερώτημα και προσθέτετε την αναφορά και των δύο στηλών στο επιλέγω δήλωση, λαμβάνετε έναν αριθμό ταιριασμένων σειρών με διπλότυπες τιμές.
Αντί για το καταμέτρηση (στήλη) λειτουργία, πρέπει να περάσετε το μετρώ(*) λειτουργία για λήψη διπλών σειρών. ο * Η συνάρτηση εναλλάσσεται σε όλες τις σειρές και αναζητά διπλότυπες σειρές αντί για μεμονωμένες διπλότυπες τιμές.
Η έξοδος φαίνεται παρακάτω:
Εμφανίζονται οι αντίστοιχες σειρές με αναγνωριστικό προϊόντος 14 και 47, καθώς οι τιμές παραγγελίας είναι οι ίδιες.
2. Επισήμανση διπλότυπων με τη συνάρτηση row_number().
Ενώ το ομάδα από και έχοντας Ο συνδυασμός είναι ο απλούστερος τρόπος εύρεσης και επισήμανσης διπλότυπων σε έναν πίνακα, υπάρχει εναλλακτικός τρόπος εύρεσης διπλότυπων χρησιμοποιώντας το row_number() λειτουργία. ο row_number() η λειτουργία είναι μέρος του Λειτουργίες παραθύρου SQL κατηγορία και είναι απαραίτητο για την αποτελεσματική επεξεργασία των ερωτημάτων σας.
Δείτε πώς μπορείτε να επισημάνετε διπλότυπα χρησιμοποιώντας το row_number() λειτουργία:
επιλέγω παραγωγικό, παραγγελίες,
row_number() over (διαμέριση κατά παραγωγική σειρά ανά productid) ως sno
από το sahil.product_dups;
ο row_number() Η συνάρτηση χτενίζει κάθε τιμή αναγνωριστικού προϊόντος και εξομοιώνει τον αριθμό των επαναλήψεων για κάθε αναγνωριστικό. ο χώρισμα Η λέξη-κλειδί διαχωρίζει τις διπλότυπες τιμές και εκχωρεί τιμές χρονολογικά, όπως 1, 2, 3 κ.λπ.
Εάν δεν χρησιμοποιείτε το χώρισμα λέξη-κλειδί, θα έχετε έναν μοναδικό σειριακό αριθμό για όλα τα αναγνωριστικά προϊόντων, ο οποίος δεν ταιριάζει στον σκοπό σας.
ο Ταξινόμηση κατά Ο όρος εντός της ενότητας κατάτμησης είναι λειτουργικός κατά τον καθορισμό της σειράς ταξινόμησης. Μπορείτε να επιλέξετε μεταξύ αύξουσας (προεπιλογής) και φθίνουσας σειράς.
Τέλος, μπορείτε να αντιστοιχίσετε ένα ψευδώνυμο στη στήλη για να διευκολύνετε το φιλτράρισμα αργότερα (αν απαιτείται).
3. Διαγραφή διπλότυπων γραμμών από έναν πίνακα SQL
Δεδομένου ότι οι διπλές τιμές σε έναν πίνακα μπορεί να παραμορφώσουν την ανάλυσή σας, η εξάλειψή τους κατά το στάδιο του καθαρισμού δεδομένων είναι συχνά επιτακτική. Η SQL είναι μια πολύτιμη γλώσσα που προσφέρει τρόπους αποτελεσματικής παρακολούθησης και διαγραφής των διπλότυπων τιμών σας.
ένα. Χρησιμοποιώντας τη διακριτή Λέξη-κλειδί
ο διακριτή Η λέξη-κλειδί είναι ίσως η πιο κοινή και συχνά χρησιμοποιούμενη συνάρτηση SQL για την αφαίρεση διπλών τιμών σε έναν πίνακα. Μπορείτε να αφαιρέσετε διπλότυπα από μία στήλη ή ακόμα και να αντιγράψετε σειρές με μία κίνηση.
Δείτε πώς μπορείτε να αφαιρέσετε διπλότυπα από μία στήλη:
επιλέγωδιακριτή παραγωγικός από sahil.product_dups;
Η έξοδος επιστρέφει μια λίστα με όλα τα μοναδικά αναγνωριστικά προϊόντων από τον πίνακα.
Για να αφαιρέσετε διπλότυπες σειρές, μπορείτε να τροποποιήσετε τον παραπάνω κώδικα ως εξής:
επιλέγωδιακριτή * από sahil.product_dups;
Η έξοδος επιστρέφει μια λίστα με όλες τις μοναδικές σειρές από τον πίνακα. Κοιτάζοντας την έξοδο, θα παρατηρήσετε ότι τα αναγνωριστικά προϊόντων 14 και 47 εμφανίζονται μόνο μία φορά στον τελικό πίνακα αποτελεσμάτων.
σι. Χρήση της μεθόδου Common Table Expression (CTE).
Η μέθοδος Common Table Expression (CTE) διαφέρει ελαφρώς από τον κύριο κώδικα SQL. Τα CTE είναι παρόμοια με Προσωρινοί πίνακες της SQL, με τη μόνη διαφορά ότι είναι εικονικά, στα οποία μπορείτε να αναφέρετε μόνο κατά την εκτέλεση του ερωτήματος.
Το μεγαλύτερο πλεονέκτημα είναι ότι δεν χρειάζεται να περάσετε ξεχωριστό ερώτημα για να απορρίψετε αυτούς τους πίνακες αργότερα, καθώς παύουν να υπάρχουν μόλις εκτελεστεί το ερώτημα. Χρησιμοποιώντας τη μέθοδο CTE, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα για να βρείτε και να διαγράψετε διπλότυπα.
με cteproducts όπως και
(επιλέγω παραγωγικό, παραγγελίες,
row_number() over (διαμέριση κατά παραγωγική σειρά ανά productid) ως sno
από το sahil.product_dups)
επιλέγω * από cteproducts
όπου sno = 1;
Μπορείτε να καλέσετε τη συνάρτηση CTE χρησιμοποιώντας το με λέξη-κλειδί? ορίστε το όνομα του προσωρινού εικονικού πίνακα μετά το με λέξη-κλειδί. Η αναφορά του πίνακα CTE είναι χρήσιμη κατά το φιλτράρισμα των τιμών του πίνακα.
Στο επόμενο μέρος, αντιστοιχίστε αριθμούς σειρών στα αναγνωριστικά προϊόντων σας χρησιμοποιώντας το row_number() λειτουργία. Εφόσον αναφέρετε κάθε αναγνωριστικό προϊόντος με α χώρισμα συνάρτηση, κάθε επαναλαμβανόμενο αναγνωριστικό έχει μια ξεχωριστή τιμή.
Τέλος, φιλτράρετε το νέο που δημιουργήθηκε sno στήλη στο τελευταίο τμήμα με ένα άλλο επιλέγω δήλωση. Ρυθμίστε αυτό το φίλτρο σε 1 για να λάβετε μοναδικές τιμές στην τελική έξοδο.
Μάθετε να χρησιμοποιείτε την SQL με τον εύκολο τρόπο
Η SQL και οι παραλλαγές της έχουν γίνει το talk of the town, με την έμφυτη ικανότητά της να αναζητά και να χρησιμοποιεί σχεσιακές βάσεις δεδομένων. Από τη σύνταξη απλών ερωτημάτων έως την εκτέλεση περίπλοκων αναλύσεων με δευτερεύοντα ερωτήματα, αυτή η γλώσσα έχει λίγα από όλα.
Ωστόσο, πριν γράψετε οποιαδήποτε απορία, πρέπει να βελτιώσετε τις δεξιότητές σας και να σπάσετε τους κωδικούς για να γίνετε έμπειρος κωδικοποιητής. Μπορείτε να μάθετε SQL με διασκεδαστικό τρόπο εφαρμόζοντας τις γνώσεις σας σε παιχνίδια. Μάθετε μερικές φανταχτερές αποχρώσεις κωδικοποίησης προσθέτοντας λίγη διασκέδαση στον κώδικά σας.