Χρήση της ομάδας κατά σε πολλαπλές στήλες

Καταλαβαίνω το νόημα του "GROUP BY x".

Αλλά πώς λειτουργεί το GROUP BY x, y και τι σημαίνει;

Λύση

"Ομαδοποίηση κατά X" σημαίνει να τοποθετήσετε όλα τα άτομα με την ίδια τιμή για το X σε μία ομάδα.

Ομαδοποίηση κατά X, Y σημαίνει να τοποθετήσετε όλα τα άτομα με τις ίδιες τιμές για τα X και Y σε μία ομάδα.

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

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

Όταν χρησιμοποιείτε μια group by μόνο για τη στήλη του θέματος, ας πούμε:

select Subject, Count(*)
from Subject_Selection
group by Subject

Θα λάβετε κάτι σαν:

Subject    Count
------------------------------
ITB001     5
MKB114     2

...επειδή υπάρχουν 5 καταχωρήσεις για το ITB001 και 2 για το MKB114.

Αν θέλαμε να "ομαδοποιήσουμε" δύο στήλες:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

θα παίρναμε αυτό:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

Αυτό συμβαίνει επειδή, όταν ομαδοποιούμε με βάση δύο στήλες, μας λέει "Ομαδοποιήστε τα έτσι ώστε όλα αυτά με το ίδιο Θέμα και Εξάμηνο να βρίσκονται στην ίδια ομάδα, και στη συνέχεια υπολογίστε όλες τις συναρτήσεις αθροίσματος (Count, Sum, Average, κ.λπ.) για κάθε μία από αυτές τις ομάδες". Σε αυτό το παράδειγμα, αυτό αποδεικνύεται από το γεγονός ότι, όταν τους μετράμε, υπάρχουν τρία άτομα που κάνουν το ITB001 στο 1ο εξάμηνο και δύο που το κάνουν στο 2ο εξάμηνο. Και τα δύο άτομα που κάνουν το MKB114 είναι στο εξάμηνο 1, οπότε δεν υπάρχει σειρά για το εξάμηνο 2 (κανένα δεδομένο δεν ταιριάζει στην ομάδα "MKB114, εξάμηνο 2")

Ελπίζω ότι αυτό είναι λογικό.

Σχόλια (7)

Η ρήτρα GROUP BY χρησιμοποιείται σε συνδυασμό με τις συναρτήσεις συνάθροισης για την ομαδοποίηση του συνόλου αποτελεσμάτων με βάση μία ή περισσότερες στήλες. π.χ.:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Να θυμάστε αυτή τη σειρά:

  1. SELECT (χρησιμοποιείται για την επιλογή δεδομένων από μια βάση δεδομένων) &gt,
  2. FROM (η ρήτρα χρησιμοποιείται για την απαρίθμηση των πινάκων) &gt,
  3. WHERE (η ρήτρα χρησιμοποιείται για το φιλτράρισμα των εγγραφών) &gt,
  4. GROUP BY (η ρήτρα μπορεί να χρησιμοποιηθεί σε μια δήλωση SELECT για τη συλλογή δεδομένων σε πολλαπλές εγγραφές και να ομαδοποιήσει τα αποτελέσματα με βάση μία ή περισσότερες στήλες) &gt,
  5. HAVING (η ρήτρα χρησιμοποιείται σε συνδυασμό με τη ρήτρα GROUP BY για να να περιορίσει τις ομάδες των επιστρεφόμενων γραμμών μόνο σε εκείνες των οποίων η συνθήκη είναι TRUE) &gt,
  6. ORDER BY (η λέξη-κλειδί χρησιμοποιείται για την ταξινόμηση του συνόλου των αποτελεσμάτων)

Μπορείτε να τα χρησιμοποιήσετε όλα αυτά εάν χρησιμοποιείτε συναρτήσεις συνάθροισης και αυτή είναι η σειρά που πρέπει να οριστούν, διαφορετικά μπορεί να λάβετε σφάλμα.

Οι αθροιστικές συναρτήσεις είναι οι εξής:

MIN επιστρέφει τη μικρότερη τιμή σε μια δεδομένη στήλη &gt, SUM επιστρέφει το άθροισμα των αριθμητικών τιμών σε μια δεδομένη στήλη &gt, AVG επιστρέφει τη μέση τιμή μιας δεδομένης στήλης &gt, COUNT επιστρέφει το συνολικό αριθμό τιμών σε μια δεδομένη στήλη &gt, COUNT(*) επιστρέφει τον αριθμό των γραμμών ενός πίνακα

Σχόλια (3)