SQL PARTITION BY Clauuse

Sql Partition By Clauuse



Στην SQL, ο όρος PARTITION BY μας επιτρέπει να διαιρέσουμε ή να διαιρέσουμε το σύνολο αποτελεσμάτων ενός δεδομένου ερωτήματος σε διάφορες ομάδες που βασίζονται σε μία ή περισσότερες στήλες. Τα διαμερίσματα που προκύπτουν μπορεί να είναι αρκετά χρήσιμα ειδικά όταν χρειάζεται να εκτελέσετε τους υπολογισμούς σε κάθε διαμέρισμα (μεμονωμένα) ή να εφαρμόσετε τις συναρτήσεις συγκεντρωτικών στοιχείων σε κάθε ομάδα.

Σε αυτό το σεμινάριο, θα μάθουμε για τη λειτουργία της ρήτρας PARTITION BY στην SQL και θα ανακαλύψουμε πώς μπορούμε να τη χρησιμοποιήσουμε για να χωρίσουμε τα δεδομένα για ένα πιο λεπτομερές υποσύνολο.

Σύνταξη:

Ας ξεκινήσουμε με τη σύνταξη της πρότασης PARTITION BY. Η σύνταξη μπορεί να εξαρτάται από το περιβάλλον στο οποίο τη χρησιμοποιείτε, αλλά εδώ είναι η γενική σύνταξη:







ΕΠΙΛΟΓΗ στήλη1, στήλη 2, ...

OVER (PARTITION BY partition_column1, partition_column2, ...)

FROM table_name

Η δεδομένη σύνταξη αντιπροσωπεύει τα ακόλουθα στοιχεία:



  1. στήλη 1, στήλη 2 – Αυτό αναφέρεται στις στήλες που θέλουμε να συμπεριλάβουμε στο σύνολο αποτελεσμάτων.
  2. ΔΙΑΜΕΡΙΣΜΑ ΚΑΤΑ στήλες – Αυτή η ρήτρα καθορίζει τον τρόπο με τον οποίο θέλουμε να χωρίσουμε ή να ομαδοποιήσουμε τα δεδομένα.

Δειγμα δεδομένων

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



ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙΩΝ προϊόντων (
product_id INT PRIMARY KEY AUTO_INCREMENT,
όνομα_προϊόντος VARCHAR( 255 ),
κατηγορία VARCHAR( 255 ),
τιμή ΔΕΚΑΔΙΚΟ( 10 , 2 ),
ποσότητα INT,
expiration_date DATE,
barcode BIGINT
)

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( 'Καπέλο σεφ 25 εκ.' ,
'φούρνος' ,
24,67 ,
57 ,
'09-09-2023' ,
2854509564204 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( «Αυγά ορτυκιού - Κονσερβοποιημένα» ,
'ντουλάπι' ,
17,99 ,
67 ,
'29-09-2023' ,
1708039594250 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( 'Καφές - Αυγό Καπουτσίνο' ,
'φούρνος' ,
92,53 ,
10 ,
'22-09-2023' ,
8704051853058 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( 'Αχλάδι - Φραγκόσυκο' ,
'φούρνος' ,
65,29 ,
48 ,
'23-08-2023' ,
5174927442238 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( 'Ζυμαρικά - Μαλλιά Αγγέλου' ,
'ντουλάπι' ,
48,38 ,
59 ,
'05-08-2023' ,
8008123704782 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( «Κρασί - Prosecco Valdobiaddene» ,
'παράγω' ,
44,18 ,
3 ,
'2023-03-13' ,
6470981735653 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( 'Ζαχαροπλαστική - Γαλλική Μίνι Ποικιλία' ,
'ντουλάπι' ,
36,73 ,
52 ,
'29-05-2023' ,
5963886298051 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( «Πορτοκάλι - Κονσέρβα, Μανταρίνι» ,
'παράγω' ,
65,0 ,
1 ,
'2023-04-20' ,
6131761721332 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( 'ΧΟΙΡΙΝΗ ΣΠΑΛΑ' ,
'παράγω' ,
55,55 ,
73 ,
'01-05-2023' ,
9343592107125 )

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
αξίες ( 'Dc Hikiage Hira Huba' ,
'παράγω' ,
56,29 ,
53 ,
'14-04-2023' ,
3354910667072 )

Μόλις έχουμε τη ρύθμιση του δείγματος δεδομένων, μπορούμε να προχωρήσουμε και να χρησιμοποιήσουμε την ρήτρα PARTITION BY.





Βασική χρήση

Ας υποθέσουμε ότι θέλουμε να υπολογίσουμε τα συνολικά στοιχεία για κάθε κατηγορία προϊόντων στον προηγούμενο πίνακα. Μπορούμε να χρησιμοποιήσουμε το PARTITION BY για να χωρίσουμε τα είδη σε μοναδικές κατηγορίες και στη συνέχεια να καθορίσουμε το σύνολο της ποσότητας σε κάθε κατηγορία.

Ένα παράδειγμα είναι το εξής:



ΕΠΙΛΕΓΩ
Ονομασία προϊόντος,
κατηγορία,
ποσότητα,
SUM(ποσότητα) ΠΑΝΩ (ΚΑΤΑΝΟΜΗ ΚΑΤΑ κατηγορία) ΩΣ συνολικά_στοιχεία
ΑΠΟ
προϊόντα;

Παρατηρήστε ότι στο συγκεκριμένο παράδειγμα, χωρίζουμε τα δεδομένα χρησιμοποιώντας τη στήλη 'κατηγορία'. Στη συνέχεια χρησιμοποιούμε τη συνάρτηση συγκεντρωτικής SUM() για να προσδιορίσουμε τα συνολικά στοιχεία σε κάθε κατηγορία ξεχωριστά. Το αποτέλεσμα δείχνει τα συνολικά στοιχεία σε κάθε κατηγορία.

Χρήση της ρήτρας PARTITION BY

Συνοψίζοντας, η πιο συνηθισμένη περίπτωση χρήσης της ρήτρας PARTITION BY είναι σε συνδυασμό με τις συναρτήσεις παραθύρου. Η συνάρτηση παραθύρου εφαρμόζεται σε κάθε διαμέρισμα ξεχωριστά.

Μερικές από τις κοινές λειτουργίες παραθύρου που χρησιμοποιούνται με το PARTITION BY περιλαμβάνουν τα ακόλουθα:

  • SUM() – Υπολογίστε το άθροισμα μιας στήλης σε κάθε διαμέρισμα.
  • AVG() – Υπολογίστε τον μέσο όρο μιας στήλης σε κάθε διαμέρισμα.
  • COUNT() – Μετρήστε τον αριθμό των γραμμών σε κάθε διαμέρισμα.
  • ROW_NUMBER() – Εκχωρήστε έναν μοναδικό αριθμό σειράς σε κάθε σειρά μέσα σε κάθε διαμέρισμα.
  • RANK() – Εκχωρήστε μια κατάταξη σε κάθε σειρά μέσα σε κάθε διαμέρισμα.
  • DENSE_RANK() – Εκχωρήστε μια πυκνή κατάταξη σε κάθε σειρά μέσα σε κάθε διαμέρισμα.
  • NTILE() – Διαιρέστε τα δεδομένα σε ποσοστάσια μέσα σε κάθε διαμέρισμα.

Αυτό είναι!

συμπέρασμα

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