Μαθήματα › Αποφάσεις με βάση τα δεδομένα: Από την ερώτηση στην απάντηση

Ομαδοποίηση σε πίνακα έτοιμο για γράφημα

Μάθημα 6 από 8 · 13 λ

Μία γραμμή ανά στήλη γραφήματος

Ένα γράφημα είναι ένας πίνακας μεταμφιεσμένος. Ένα ραβδόγραμμα εσόδων ανά πηγή χρειάζεται ακριβώς μία γραμμή ανά πηγή και μία στήλη ανά τιμή. Το να περάσετε από χιλιάδες γραμμές παραγγελιών σε μια χούφτα συνοπτικές γραμμές είναι η δουλειά του GROUP BY.

SQL
SELECT source,
       COUNT(*) AS orders,
       ROUND(SUM(net_amount), 2) AS revenue
FROM orders
WHERE status = 'delivered'
  AND order_date >= '2026-01-01'
  AND order_date < '2026-04-01'
GROUP BY source
ORDER BY revenue DESC;

Το GROUP BY source συμπτύσσει όλες τις γραμμές με την ίδια πηγή σε μία γραμμή, και συναθροίσεις όπως το COUNT και το SUM λειτουργούν τότε μέσα σε κάθε ομάδα. Κάθε στήλη στο SELECT πρέπει είτε να εμφανίζεται στο GROUP BY είτε να βρίσκεται μέσα σε μια συνάθροιση. Διαφορετικά η SQL δεν μπορεί να ξέρει ποια από τις πολλές τιμές μιας ομάδας να δείξει.

Για το πρώτο τρίμηνο του 2026 το αποτέλεσμα βάζει πρώτο το direct με CHF 14'711.70, μετά το paid search με CHF 5'798.60 και το organic με CHF 5'716.96. Το social έρχεται τελευταίο με CHF 2'662.37. Διαβάστε το προσεκτικά: το source είναι η πηγή της επίσκεψης που οδήγησε στην παραγγελία. Από τις 273 παραγγελίες που έγιναν από direct επισκέψεις σε αυτό το τρίμηνο, μόνο 22 ήταν πρώτη παραγγελία. Αυτός ο πίνακας δείχνει πού καταλήγουν οι παραγγελίες, όχι ποιο κανάλι κέρδισε τον πελάτη.

Ομαδοποίηση με βάση μια υπολογισμένη τιμή

Για να ομαδοποιήσετε ανά μήνα, υπολογίστε τον μήνα από την ημερομηνία. Το strftime(order_date, '%Y-%m') μορφοποιεί μια ημερομηνία ως κείμενο όπως 2025-07. Επειδή το κείμενο ξεκινά με το έτος, η ταξινόμησή του ταξινομεί επίσης τους μήνες με χρονολογική σειρά.

  • Ονομάστε την υπολογισμένη στήλη με AS, για παράδειγμα AS month. Στη DuckDB μπορείτε τότε να γράψετε GROUP BY month· σε κάποιες άλλες βάσεις δεδομένων επαναλαμβάνετε τον υπολογισμό.
  • Φιλτράρετε πριν ομαδοποιήσετε. Το WHERE αφαιρεί γραμμές πριν αυτές ομαδοποιηθούν, οπότε οι ακυρωμένες παραγγελίες δεν φτάνουν ποτέ στα αθροίσματα.
  • Ταξινομήστε τις γραμμές με τον τρόπο που διαβάζεται το γράφημα: τους μήνες χρονολογικά, τις κατηγορίες κατά μέγεθος.
  • Κρατήστε τον αριθμό γραμμών αρκετά μικρό ώστε να διαβάζεται. Οκτώ περιφέρειες ή δώδεκα μήνες κάνουν ένα καλό γράφημα· 96 προϊόντα συνήθως χρειάζονται ένα top 10 και μία γραμμή για τα υπόλοιπα.

Πώς μοιάζει η χρονιά

Ομαδοποιημένα ανά μήνα, τα παραδοθέντα έσοδα του 2025 κυμαίνονται από CHF 7'963.79 τον Ιούλιο έως CHF 18'373.89 τον Δεκέμβριο. Ο Δεκέμβριος δεν είχε τις περισσότερες παραγγελίες· ο Νοέμβριος είχε, με 273. Τα καλάθια του Δεκεμβρίου ήταν τα μεγαλύτερα, με CHF 70.67 κατά μέσο όρο. Το δεύτερο τρίμηνο του 2025 έφερε CHF 37'265.67.

Οι παραγγελίες και τα έσοδα δεν κατατάσσουν πάντα τις ομάδες με τον ίδιο τρόπο. Το 2025 η Γενεύη είχε 272 παραδοθείσες παραγγελίες και η Βασιλεία 264, όμως η Βασιλεία έφερε περισσότερα έσοδα, CHF 16'079.85 έναντι CHF 15'744.15, επειδή οι παραγγελίες της ήταν μεγαλύτερες κατά μέσο όρο. Όταν δύο τιμές θα μπορούσαν να λένε διαφορετικές ιστορίες, και οι δύο στήλες ανήκουν στον πίνακα.

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

💡 Ένας πίνακας έτοιμος για γράφημα δεν έχει κενά κελιά, μία σαφή μονάδα ανά στήλη, όπως παραγγελίες ή CHF, και ακριβώς τις γραμμές που θα δείξει το γράφημα. Αν πρέπει να διαγράψετε γραμμές σε ένα υπολογιστικό φύλλο πριν φτιάξετε το γράφημα, αλλάξτε αντ' αυτού το ερώτημα.
Έλεγχος γνώσης
Ποιο ερώτημα επιστρέφει έναν σωστό πίνακα έτοιμο για γράφημα με παραγγελίες ανά περιφέρεια;

Συνδέσου για να απαντήσεις και να παρακολουθήσεις την πρόοδό σου.

Σύνδεση
</>
Babala Software Netzwerk — Apps, Websites & KI-Lösungen aus Füllinsdorf BL
© 2026 Babala Özdemir · UID CHE-322.105.560 babala.ch info@babala.ch 076 792 63 50 Facebook Instagram