Συμβόλαιο GROUP BY SQL
- Προηγούμενη Σελίδα sum() SQL
- Επόμενη Σελίδα Having SQL
Οι συνοπτικές συνάρτησεις (π.χ. SUM) συχνά απαιτούν την προσθήκη της πρότασης GROUP BY.
Πρόταση GROUP BY
Η πρόταση GROUP BY χρησιμοποιείται για να συνδυάζει συνοπτικές συνάρτησεις, για να ομαδοποιεί τις ομάδες αποτελεσμάτων βάσει μιας ή περισσότερων στήλων.
Γλώσσα SQL GROUP BY
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
Παράδειγμα SQL GROUP BY
Εχουμε τον παρακάτω "Orders" πίνακα:
O_Id | OrderDate | OrderPrice | Customer |
---|---|---|---|
1 | 2008/12/29 | 1000 | Bush |
2 | 2008/11/23 | 1600 | Carter |
3 | 2008/10/05 | 700 | Bush |
4 | 2008/09/28 | 300 | Bush |
5 | 2008/08/06 | 2000 | Adams |
6 | 2008/07/21 | 100 | Carter |
Τώρα, θέλουμε να βρούμε το συνολικό ποσό για κάθε πελάτη (το συνολικό όγκο παραγγελιών).
Θα ήθελα να χρησιμοποιήσω τη φράση GROUP BY για να συνοπτώ τους πελάτες.
Χρησιμοποιούμε την παρακάτω συνθήκη SQL:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
Το σύνολο των αποτελεσμάτων μοιάζει με αυτό:
Customer | SUM(OrderPrice) |
---|---|
Bush | 2000 |
Carter | 1700 |
Adams | 2000 |
Μuy bien, ¿no?
Ας δούμε τι θα συμβεί αν παραλείψουμε τη φράση GROUP BY:
SELECT Customer,SUM(OrderPrice) FROM Orders
Το σύνολο των αποτελεσμάτων μοιάζει με αυτό:
Customer | SUM(OrderPrice) |
---|---|
Bush | 5700 |
Carter | 5700 |
Bush | 5700 |
Bush | 5700 |
Adams | 5700 |
Carter | 5700 |
Το σύνολο των αποτελεσμάτων δεν είναι αυτό που χρειαζόμαστε.
Τότε γιατί δεν μπορούμε να χρησιμοποιήσουμε τη συνθήκη SELECT παραπάνω; Αναλυτική 설ήφεια: Η συνθήκη SELECT παραπάνω καθορίζει δύο στήλες (Customer και SUM(OrderPrice)). "SUM(OrderPrice)" επιστρέφει μια μοναδική τιμή (το σύνολο της στήλης "OrderPrice"), ενώ το "Customer" επιστρέφει 6 τιμές (μια για κάθε γραμμή στη στήλη "Orders"). Επομένως, δεν μπορούμε να πάρουμε τα σωστά αποτελέσματα. Ωστόσο, όπως έχεις δει, η φράση GROUP BY λύνει αυτό το πρόβλημα.
GROUP BY περισσότερες από μια στήλες
Μπορούμε επίσης να εφαρμόσουμε τη φράση GROUP BY σε περισσότερες από μια στήλες, όπως αυτή:
SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders GROUP BY Customer,OrderDate
- Προηγούμενη Σελίδα sum() SQL
- Επόμενη Σελίδα Having SQL