Συνάρτηση οδηγού SQL

Synartese Odegou Sql



Η συνάρτηση lead() SQL σάς επιτρέπει να έχετε πρόσβαση στην επόμενη σειρά από την τρέχουσα σειρά σε μια συγκεκριμένη μετατόπιση. Εν ολίγοις, η συνάρτηση lead() σάς επιτρέπει να έχετε πρόσβαση στην επόμενη σειρά από την τρέχουσα. Καθορίζοντας την τιμή μετατόπισης, μπορείτε να αποκτήσετε πρόσβαση στις επόμενες 1, 2, 3, κ.λπ., σειρές από την τρέχουσα.

Είναι το αντίθετο της συνάρτησης lag() που σας επιτρέπει να έχετε πρόσβαση στις προηγούμενες σειρές.







Λειτουργία SQL Lead().

Η σύνταξη της συνάρτησης είναι η εξής:



LEAD(έκφραση_τιμής, μετατόπιση [, προεπιλογή])
ΠΑΝΩ ΑΠΟ (
[ΔΙΑΜΕΡΙΣΜΑ ΚΑΤΑ partition_expression]
ORDER BY sort_expression [ASC | DESC]
)

Τα ακόλουθα είναι τα υποστηριζόμενα επιχειρήματα:



  1. τιμή_έκφραση – Καθορίζει την τιμή επιστροφής της προηγούμενης σειράς. Η έκφραση πρέπει να αξιολογηθεί σε μία μόνο τιμή.
  2. αντισταθμίζεται – Καθορίζει πόσες σειρές προς τα εμπρός από την τρέχουσα σειρά για πρόσβαση.
  3. Προκαθορισμένο – Ορίζει την προεπιλεγμένη τιμή εάν η μετατόπιση είναι εκτός του πεδίου εφαρμογής του διαμερίσματος. Από προεπιλογή, η τιμή έχει οριστεί σε NULL.
  4. Διαμέριση από – Καθορίζει τον τρόπο κατάτμησης των δεδομένων.
  5. Ταξινόμηση κατά – Ορίζει τη μορφή παραγγελίας για τις σειρές σε κάθε διαμέρισμα.

Δείγμα ρύθμισης δεδομένων

Πριν βουτήξουμε στη λειτουργία της συνάρτησης lead(), ας ξεκινήσουμε με τη δημιουργία του βασικού πίνακα για σκοπούς επίδειξης.





ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙΩΝ προϊόντων (
product_id INT PRIMARY KEY AUTO_INCREMENT,
όνομα_προϊόντος VARCHAR(255),
κατηγορία VARCHAR(255),
τιμή DECIMAL(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)
τιμές ('Πορτοκαλί - Κονσερβοποιημένο, Mandarin',
'παράγω',
65,0,
1,
'2023-04-20',
6131761721332);

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)
τιμές ('Χοιρινό - Ώμος',
'παράγω',
55,55,
73,
'01-05-2023',
9343592107125);

εισάγετε
σε
προϊόντα (όνομα_προϊόντος,
κατηγορία,
τιμή,
ποσότητα,
ημερομηνία λήξης,
barcode)

τιμές ('Dc Hikiage Hira Huba',
'παράγω',
56,29,
53,
'2023-04-14',
3354910667072);

Παράδειγμα 1:

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

Μπορούμε να χρησιμοποιήσουμε τη συνάρτηση lead() ως εξής:



Ας υποθέσουμε ότι έχουμε έναν πίνακα που περιέχει πληροφορίες για έναν εργαζόμενο ως εξής:

επιλέγω
Ονομασία προϊόντος,
τιμή,
lead(barcode) over (διαμέριση ανά κατηγορία
Ταξινόμηση κατά
τιμή αυξ.) ως επόμενο_αντικείμενο
από
προϊόντα p;

Ο κωδικός που δίνεται χωρίζει τα δεδομένα με βάση την κατηγορία. Στη συνέχεια, ανακτά τον επόμενο γραμμωτό κώδικα στο διαμέρισμα χρησιμοποιώντας τη συνάρτηση lead().

Η έξοδος που προκύπτει είναι η εξής:

Παράδειγμα 2:

Εάν δεν υπάρχει επόμενη σειρά σε μια συγκεκριμένη στήλη (εκτός ορίου), η συνάρτηση ορίζει την τιμή σε NULL όπως φαίνεται στο προηγούμενο παράδειγμα.

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

επιλέγω
Ονομασία προϊόντος,
τιμή,
lead(barcode, 1, 'N/A') over (διαμέριση ανά κατηγορία
Ταξινόμηση κατά
τιμή αυξ.) ως επόμενο_αντικείμενο
από
προϊόντα p;

Ορίσαμε την προεπιλεγμένη τιμή σε 'N/A'. Αυτό θα πρέπει να αντικαταστήσει οποιαδήποτε τιμή εκτός ορίου όπως φαίνεται στην ακόλουθη έξοδο:

ΣΗΜΕΙΩΣΗ : Η ρύθμιση της μετατόπισης σε 1 μοιάζει με το να μην προσδιορίζεται καμία τιμή.

Παράδειγμα 3:

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

Ένα παράδειγμα ερωτήματος απεικονίζεται στα ακόλουθα:

επιλέγω
Ονομασία προϊόντος,
τιμή,
lead(barcode, 2, 'N/A') over (διαμέριση ανά κατηγορία
Ταξινόμηση κατά
τιμή αυξ.) ως επόμενο_αντικείμενο
από
προϊόντα p;

Αυτό το ερώτημα επιστρέφει τις επόμενες δύο σειρές σε κάθε διαμέρισμα όπως φαίνεται παρακάτω:

Ορίστε το!

συμπέρασμα

Σε αυτό το σεμινάριο, μάθαμε πώς να εργαζόμαστε με τη συνάρτηση lead() για να λάβουμε το επόμενο στοιχείο από την τρέχουσα σειρά.