Πώς να χρησιμοποιήσετε τη μονάδα Crosstab PostrgreSQL

Pos Na Chresimopoiesete Te Monada Crosstab Postrgresql



Όταν εκτελείτε μια δήλωση SELECT για να ανακτήσετε τις εγγραφές από έναν πίνακα PostgreSQL, τα δεδομένα επιστρέφονται σε μορφή πίνακα. Η φόρμα πίνακα μπορεί να μην είναι πάντα η καλύτερη για την ανάγνωση των δεδομένων, ειδικά όταν θέλετε να συγκρίνετε τις τιμές. Μια καλύτερη προσέγγιση είναι να επιστρέψετε τις εγγραφές ως διασταύρωση. Για αυτό, η PostgreSQL προσφέρει το tablefunc για να επιτρέπει στους χρήστες να χρησιμοποιούν τη συνάρτηση crosstab για να αναπαραστήσουν τα δεδομένα προορισμού ως συγκεντρωτικό πίνακα. Αυτή η ανάρτηση αναλύει περισσότερο τον τρόπο χρήσης της συνάρτησης διασταύρωσης PostgreSQL. Συνέχισε να διαβάζεις!

Εργασία με τη μονάδα Crosstab PostgreSQL

Είναι χρήσιμο να έχετε ένα δωμάτιο για να καθορίσετε πώς θέλετε να εκπροσωπούνται τα δεδομένα σας. Με την PostgreSQL, αν και ο προεπιλεγμένος τρόπος είναι να έχετε τα δεδομένα σε μορφή πίνακα, η ενότητα crosstab σας δίνει μια άλλη επιλογή. Μπορείτε να δημιουργήσετε τους συγκεντρωτικούς πίνακες χρησιμοποιώντας τις στήλες 'επιλογή' από έναν πίνακα PostgreSQL για καλύτερη παρουσίαση.

Το εκπληκτικό χαρακτηριστικό έρχεται ως επέκταση για την έκδοση 8.3 της PostgreSQL. Η επέκταση 'tablefunc' προσφέρει τη λειτουργία crosstab, καθιστώντας δυνατή την εμφάνιση των συγκεντρωτικών πινάκων ως σύνολο αποτελεσμάτων. Ας δώσουμε ένα παράδειγμα.







Αρχικά, δημιουργούμε τον πίνακα «αποτελέσματα» με τρεις στήλες χρησιμοποιώντας την ακόλουθη εντολή:





Ο πίνακας που δημιουργήθηκε είναι κενός. Επομένως, προχωρήστε και χρησιμοποιήστε το ερώτημα INSERT για να προσθέσετε τις τιμές σε αυτό. Για αυτήν την περίπτωση, εισάγουμε μερικές εγγραφές όπως φαίνεται παρακάτω:





Εάν εκτελέσουμε τη δήλωση 'επιλογή', έχουμε τα ακόλουθα αποτελέσματα. Σημειώστε πώς αυτός ο προεπιλεγμένος τρόπος ανάκτησης των εγγραφών τις παρουσιάζει σε μορφή πίνακα. Οι στήλες χρησιμοποιούνται ως κεφαλίδες και οι αντίστοιχες τιμές τους εμφανίζονται στις σειρές:



Αν και η προηγούμενη προσέγγιση λειτουργεί για τις περισσότερες περιπτώσεις, υπάρχει μια άλλη επιλογή για την ανάκτηση των ίδιων εγγραφών. Για αυτήν την περίπτωση, θέλουμε να δημιουργήσουμε έναν συγκεντρωτικό πίνακα. Επομένως, χρησιμοποιούμε την επέκταση 'tablefunc' που συνοδεύει την PostgreSQL έκδοση 8.3+.


Λοιπόν, ας δημιουργήσουμε μια επέκταση 'tablefunc' για να την ενεργοποιήσουμε όταν την καλούμε στο ερώτημα. Εκτελέστε την ακόλουθη εντολή:

ΔΗΜΙΟΥΡΓΗΣΤΕ ΕΠΕΚΤΑΣΗ ΑΝ ΔΕΝ ΥΠΑΡΧΕΙ tablefunc ;

Θα γνωρίζετε ότι η επέκταση έχει ενεργοποιηθεί με επιτυχία μόλις λάβετε μια έξοδο όπως αυτή που έχουμε στην προηγούμενη εικόνα.

Για τη συνάρτηση crosstab, ας την κάνουμε έτσι ώστε η πρώτη στήλη να είναι η σχολή. Κάτω από αυτό είναι οι διάφορες σχολές που έχουμε στον πίνακα μας. Δίπλα στη στήλη σχολή, έχουμε άλλες στήλες που αντιπροσωπεύουν τις διαφορετικές τιμές στη στήλη κατηγορίας του πίνακα μας. Τέλος, για κάθε κατηγορία, έχουμε τον αριθμό των μαθητών που έφτασαν στις διαφορετικές κατηγορίες.

Για να επιτύχετε έναν τέτοιο συγκεντρωτικό πίνακα, χρησιμοποιήστε την ακόλουθη σύνταξη:

ΕΠΙΛΕΓΩ * ΑΠΟ ΤΟ CROSSTAB ( «ΕΠΙΛΟΓΗ στήλης 1 , στήλη 2 , στήλη 3 ΑΠΟ name_table ORDER BY critera' )

ΩΣ new_name ( στήλη1 τύπος δεδομένων , στήλη2 τύπος δεδομένων , στήλη_n τύπος_δεδομένων ) ;

Χρησιμοποιώντας τον πίνακα παραδείγματος που δημιουργήσαμε, η εντολή μας έχει ως εξής:

Πριν δούμε τα αποτελέσματα, ας κάνουμε μια ανάλυση σχετικά με τον τρόπο λειτουργίας της εντολής της μονάδας crosstab. Αρχικά, η δήλωση SELECT επιστρέφει τρεις στήλες. Η πρώτη στήλη αντιμετωπίζεται ως αναγνωριστικό γραμμής. Στην περίπτωσή μας, είναι η στήλη «σχολή». Η δεύτερη στήλη, η οποία είναι η στήλη 'κατηγορία', αντιπροσωπεύει τις κατηγορίες για τον συγκεντρωτικό πίνακα. Τέλος, η τρίτη στήλη περιέχει τις τιμές για τις κατηγορίες. Στην περίπτωσή μας είναι ο αριθμός των μαθητών σε κάθε κατηγορία.

Έχοντας αυτή την κατανόηση, μόλις πατήσουμε το πλήκτρο 'Enter', παίρνουμε τον συγκεντρωτικό πίνακα ως εξής:

Με βάση τον επιστρεφόμενο συγκεντρωτικό πίνακα, μπορούμε να δούμε ότι λειτουργεί σαν ένας πίνακας 2-D όπου η πρώτη στήλη στη δήλωση SELECT είναι ο πρώτος πίνακας και η δεύτερη στήλη είναι ο δεύτερος πίνακας στη διάσταση. Η τρίτη στήλη περιέχει τις τιμές για τα στοιχεία του δεύτερου πίνακα.

συμπέρασμα

Η διασταύρωση PostgreSQL είναι καλή για την αναπαράσταση των τιμών του πίνακα ως συγκεντρωτικού πίνακα. Πρέπει να επιστρέψετε τρεις στήλες στη δήλωση SELECT για να χρησιμοποιήσετε τη λειτουργική μονάδα crosstab και αυτή η ανάρτηση έχει μοιραστεί ένα πρακτικό παράδειγμα σχετικά με τον τρόπο χρήσης της. Επιπλέον, εξηγήσαμε πώς λειτουργεί η μονάδα crosstab στη δημιουργία του συγκεντρωτικού πίνακα που χρησιμοποιεί την ίδια λογική με έναν πίνακα 2-D.