Συμβόλαιο GROUP BY 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