Ομάδα Postgresql από

Omada Postgresql Apo



Το Postgresql group by clause είναι ένα χαρακτηριστικό που χρησιμοποιείται για τη συνένωση/συνδυασμό των γραμμών στον πίνακα που έχουν τα ίδια δεδομένα. Αυτή η ρήτρα χρησιμοποιείται κυρίως για την αφαίρεση διπλότυπων δεδομένων και για τη διατήρηση της ταυτότητος. Όποτε θέλουμε να υπολογίσουμε το άθροισμα ή οποιοδήποτε άλλο άθροισμα όπως το AVG κ.λπ., αυτή η ομάδα ανά ρήτρα χρησιμοποιείται πάντα καθώς υπάρχουν πολλές ρήτρες που χρησιμοποιούνται στην PostgreSQL. Υπάρχει όμως μια ιεραρχία μεταξύ κάθε ρήτρας.

FROM > WHERE > 'GROUP BY' > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

Η λειτουργία της PostgreSQL βρίσκεται στο «where» και στην ρήτρα «Having».







Σύνταξη



ΕΠΙΛΟΓΗ στήλης

ΑΠΟ dumytable

ΠΟΥ [προϋποθέσεις]

ΟΜΑΔΑ ΑΠΟ πρώτη στήλη, δεύτερη στήλη..

ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ πρώτη στήλη, δεύτερη στήλη.. ;

Παράδειγμα 1



Για να κατανοήσουμε την έννοια της ομάδας ανά συνάρτηση, χρησιμοποιούμε ένα παράδειγμα εδώ. Στον πίνακα των επιβατών, μπορείτε να δείτε ότι τα επώνυμα είναι ίδια για μερικούς ανθρώπους. Κάθε όνομα που είναι παρόμοιο με ένα άλλο σχηματίζει μια ομάδα και η πληρωμή τους προστίθεται συλλογικά σε κάθε ίδιο όνομα. Αυτό αναλύεται στο παρακάτω παράδειγμα.





>> επιλέξτε lname, SUM (πληρωμή) από ΟΜΑΔΑ επιβατών ΚΑΤΑ lόνομα.

Το επώνυμο του επιβάτη επιλέγεται με τη χρήση της ενσωματωμένης συνάρτησης «SUM» που παίρνει τη στήλη «πληρωμή». Και προσθέστε την πληρωμή για τα άτομα που έχουν το ίδιο όνομα. Για παράδειγμα, προστίθεται ο μισθός του 'Javed' και του 'saad'. Ενώ για το «Malik» και το «Shams», αναφέρεται μεμονωμένα.



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

Νοσοκομείο:

>> επιλέξτε πόλη, Αθροισμα (ηλικία) από το νοσοκομείο ΟΜΑΔΑ ΑΝΑ πόλη.

Παράδειγμα 2

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

Αυτό είναι ένα παράδειγμα της ομάδας προς ρήτρα με πολλές στήλες. Επειδή όταν επιλέγονται πολλές στήλες για ομαδοποίηση, η προκύπτουσα τιμή αλλάζει σε σύγκριση με την ομάδα από έναν μόνο πίνακα.

>> επιλέξτε id, lname, SUM (πληρωμή) από ΟΜΑΔΑ επιβατών ΚΑΤΑ id, lname.

Από την έξοδο, θα παρατηρήσετε ένα πράγμα ότι πρώτα εμφανίζονται όλα εκείνα τα lname που είναι ασυνήθιστα και μετά αναφέρονται στον πίνακα αυτά που είναι τα ίδια.

Παράδειγμα 3

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

Στοιχεία:

Παραγγελίες:

Χρησιμοποιήσαμε μια μέθοδο συνένωσης (χρησιμοποιείται για τη σύνδεση δύο συμβολοσειρών) για να ενώσουμε τις τιμές δύο στηλών του πίνακα 'στοιχεία' με ',' και να ονομάσουμε τη στήλη συλλογικά ως 'περιγραφή'. Είναι προαιρετικό. μπορείτε να τα πάρετε ξεχωριστά. Σε αυτό το ερώτημα, η λέξη-κλειδί 'ΧΡΗΣΗ' προσδιορίζει τη συγκεκριμένη στήλη από τον άλλο πίνακα. Η διεύθυνση από τον πίνακα στοιχείων αντιστοιχίζεται με τη στήλη διευθύνσεων του πίνακα 'παραγγελίες'. Αυτό γίνεται κάνοντας μια ένωση μεταξύ δύο τραπεζιών. Όπως και τα προηγούμενα παραδείγματα, και οι δύο στήλες θα επιλεγούν από τον όρο GROUP BY.

>> επιλέξτε όνομα || ',' || κατηγορία ως Περιγραφή, διεύθυνση από στοιχεία εσωτερική ένωση Παραγγελίες ΧΡΗΣΗ (διεύθυνση) ΟΜΑΔΑ ΑΝΑ διεύθυνση, Περιγραφή.

Μπορείτε να παρατηρήσετε ότι θα επιλεγούν 5 σειρές με τη διεύθυνση των αντικειμένων να ταιριάζει με τη διεύθυνση των παραγγελιών. Και στη συνέχεια, η στήλη Περιγραφή θα σχηματιστεί αντιστοιχία με τη στήλη διεύθυνσης.

Ομοίως, υπάρχει ένα άλλο παράδειγμα συνάφειας με τον παράγοντα ηλικίας σε δύο πίνακες. Ο ένας είναι «επιβάτης» και ο άλλος «εργάτης». Η συνάφεια είναι μεταξύ του ονόματος και του επωνύμου. Και τα δύο αυτά ονόματα χωρίζονται μέσω του κενού μεταξύ δύο ονομάτων. Έχουμε πάρει ένα μέρος από το τραπέζι των εργαζομένων εδώ.

Εργάτης:

Το ερώτημα θα λειτουργήσει έτσι ώστε το σημείο όπου το όνομα του εργαζομένου αντιστοιχίζεται με τον επιβάτη, την ηλικία του επιβάτη, να εμφανίζεται στη στήλη ηλικία.

>> επιλέξτε fname || ‘‘ || επιβάτη.lόνομα ως πλήρες_όνομα, επιβατηγό.ηλικία από επιβάτη ΕΣΩΤΕΡΙΚΟΣ μέλος εργάτης ΧΡΗΣΙΜΟΠΟΙΗΣΗ (fname) ΟΜΑΔΑ ΚΑΤΑ πλήρες όνομα, επιβάτη. ηλικία ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ επιβάτη.ηλικία.

Σχηματίζεται μια σειρά. Το πλήρες_όνομα δημιουργείται ενώνοντας δύο στήλες με κενό διάστημα και επιλέγεται η διεύθυνση όπου το fname του επιβάτη ταιριάζει με το fname του εργαζόμενου.

Παράδειγμα 4

Αυτό το παράδειγμα αφορά τη χρήση μιας συνάρτησης count () για την καταμέτρηση των αναγνωριστικών του πίνακα 'στοιχεία'. Αυτή είναι πάλι ομάδα με το αναγνωριστικό του πίνακα.

>> Επιλέξτε id, COUNT (id) ΑΠΟ αντικείμενα GROUP BY id.

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

Το pgAdmin σας

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

Εξετάστε το πρώτο παράδειγμα. Εδώ, έχουμε δημιουργήσει ένα όνομα στήλης 'ALL' που έχει συνδυάσει δύο στήλες. Μια διεύθυνση και μια κατηγορία. Η στήλη 'ALL' μετρά τις τιμές και στις δύο στήλες συλλογικά. Η στήλη διεύθυνσης ομαδοποιείται ως 'προσθήκη' και η στήλη κατηγορίας ομαδοποιείται ξεχωριστά ως 'γάτα'. Καθώς τα ονόματα στηλών και των δύο πινάκων που χρησιμοποιούνται μπορούν να αντιστοιχιστούν μεταξύ τους. Άρα σε κάθε στήλη του αντίστοιχου πίνακα προσπελάζεται ένα συγκεκριμένο αντικείμενο.

Η συνθήκη που εφαρμόζεται στην εντολή εξαρτάται από το αναγνωριστικό και τον αριθμό παραγγελίας. Όπου και οι δύο αριθμοί αναγνώρισης και παραγγελίας είναι οι ίδιοι, λαμβάνονται τα δεδομένα. Ομοίως, προστίθεται μια επιπλέον προϋπόθεση για το όνομα.

>> ΕΠΙΛΟΓΗ ο.διεύθυνση, κατηγορία, μέτρηση (*) ΩΣ 'ΟΛΑ', ΟΜΑΔΟΠΟΙΗΣΗ(ο.διεύθυνση) ΩΣ 'προσθήκη' , ΟΜΑΔΟΠΟΙΗΣΗ (κατηγορία ) ΩΣ 'γάτα' ΑΠΟ στοιχεία I, παραγγελίες o όπου i.noder_no = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.address, class) ORDER BY 1, 2;

Για την πόλη της Λαχώρης επιλέγεται μία κατηγορία. Υπάρχουν 4 δυνατότητες. Μερικές φορές, το παιχνίδι είναι παρόν αλλά όχι η διεύθυνση. Και αντίστροφα. Αλλά υπάρχει μια στιγμή όπου υπάρχουν και η κατηγορία και η διεύθυνση.

Τώρα, αν αλλάξουμε τη συνθήκη του ονόματος από έναν πίνακα και αλλάξουμε τον πίνακα με άλλο. Το 'Items.address' αντικαθίσταται από το 'order.address', τότε το αποτέλεσμα είναι διαφορετικό.

συμπέρασμα

Η ρήτρα 'Postgresql group by' χρησιμοποιείται για την εφαρμογή οποιουδήποτε συγκεντρωτικού τελεστή στα συλλογικά δεδομένα. Αυτό το άρθρο χρησιμοποιεί ομάδα προς ρήτρα με συνάρτηση μέτρησης, ενώσεις και επιλογή και ομαδοποίηση πολλαπλών στηλών. Είμαι βέβαιος ότι αυτό το σεμινάριο θα είναι το καλύτερο μέσο κατανόησης για τους αναγνώστες.