SQL Lead Function

Sql Lead Function



Binibigyang-daan ka ng SQL lead() function na ma-access ang susunod na row mula sa kasalukuyang row sa isang partikular na offset. Sa madaling salita, ang lead() function ay nagbibigay-daan sa iyo upang ma-access ang susunod na row mula sa kasalukuyang isa. Sa pamamagitan ng pagtukoy sa halaga ng offset, maa-access mo ang susunod na 1, 2, 3, atbp., na mga hilera mula sa kasalukuyang isa.

Ito ay ang kabaligtaran ng lag() function na nagbibigay-daan sa iyo upang ma-access ang mga nakaraang row.







SQL Lead() Function

Ang function syntax ay ang mga sumusunod:



LEAD(value_expression, offset [, default])
TAPOS (
[PARTITION BY partition_expression]
ORDER BY sort_expression [ASC | DESC]
);

Ang mga sumusunod ay ang mga sinusuportahang argumento:



  1. value_expression – Tinutukoy nito ang return value ng naunang row. Ang expression ay dapat suriin sa isang solong halaga.
  2. offset – Tinutukoy nito kung gaano karaming mga hilera ang pasulong mula sa kasalukuyang hilera upang ma-access.
  3. default – Itinatakda nito ang default na halaga kung ang offset ay nasa labas ng saklaw ng partition. Bilang default, ang halaga ay nakatakda sa NULL.
  4. Paghati sa pamamagitan ng – Tinutukoy nito kung paano hatiin ang data.
  5. Iniutos ni – Itinatakda nito ang format ng order para sa mga row sa bawat partition.

Sample na Setup ng Data

Bago tayo sumisid sa mga paggana ng lead() function, magsimula tayo sa pamamagitan ng pag-set up ng pangunahing talahanayan para sa mga layunin ng pagpapakita.





GUMAWA NG MGA produkto ng TABLE (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(255),
kategorya VARCHAR(255),
presyong DECIMAL(10, 2),
dami INT,
expiration_date DATE,
barcode BIGINT
);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Chef Hat 25cm',
'bakery',
24.67,
57,
'2023-09-09',
2854509564204);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Quail Egg - Canned',
'pantry',
17.99,
67,
'2023-09-29',
1708039594250);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Kape - Egg Nog Capuccino',
'bakery',
92.53,
10,
'2023-09-22',
8704051853058);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Pear - Prickly',
'bakery',
65.29,
48,
'2023-08-23',
5174927442238);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Pasta - Angel Hair',
'pantry',
48.38,
59,
'2023-08-05',
8008123704782);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Wine - Prosecco Valdobiaddene',
'produce',
44.18,
3,
'2023-03-13',
6470981735653);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Pastry - French Mini Assorted',
'pantry',
36.73,
52,
'2023-05-29',
5963886298051);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Orange - Canned, Mandarin',
'produce',
65.0,
1,
'2023-04-20',
6131761721332);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ('Baboy - Balikat',
'produce',
55.55,
73,
'2023-05-01',
9343592107125);

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)

mga halaga ('Dc Hikiage Hira Huba',
'produce',
56.29,
53,
'2023-04-14',
3354910667072);

Halimbawa 1:

Sa kasong ito, mayroon kaming access sa talahanayan ng 'mga produkto' na naglalaman ng impormasyon ng produkto. Ipagpalagay na gusto naming makuha ang susunod na bar code mula sa kasalukuyang hilera.

Maaari naming gamitin ang lead() function tulad ng sumusunod:



Ipagpalagay na mayroon kaming isang talahanayan na naglalaman ng impormasyon ng empleyado tulad ng sumusunod:

pumili
pangalan ng Produkto,
presyo,
lead(barcode) over (partition ayon sa kategorya
Iniutos ni
presyo asc) bilang next_item
mula sa
mga produkto p;

Ang ibinigay na code ay naghahati sa data batay sa kategorya. Pagkatapos ay kinukuha nito ang susunod na barcode sa partition gamit ang lead() function.

Ang resultang output ay ang mga sumusunod:

Halimbawa 2:

Kung walang susunod na row sa isang partikular na column (out of bound), itinatakda ng function ang value sa NULL gaya ng ipinapakita sa nakaraang halimbawa.

Upang magtakda ng default na halaga para sa anumang hindi saklaw na pag-access, magagawa namin ang sumusunod:

pumili
pangalan ng Produkto,
presyo,
lead(barcode, 1, 'N/A') sa ibabaw (partition ayon sa kategorya
Iniutos ni
presyo asc) bilang next_item
mula sa
mga produkto p;

Itinakda namin ang default na halaga sa 'N/A'. Dapat nitong palitan ang anumang out-of-bound na halaga tulad ng ipinapakita sa sumusunod na output:

TANDAAN : Ang pagtatakda ng offset sa 1 ay katulad ng hindi pagtukoy ng anumang halaga.

Halimbawa 3:

Ipagpalagay na gusto mong i-access ang susunod na dalawang row mula sa kasalukuyang row. Magagawa natin iyon sa pamamagitan ng pagtatakda ng offset na halaga sa 2.

Ang isang halimbawang query ay inilalarawan sa sumusunod:

pumili
pangalan ng Produkto,
presyo,
lead(barcode, 2, 'N/A') sa ibabaw (partition ayon sa kategorya
Iniutos ni
presyo asc) bilang next_item
mula sa
mga produkto p;

Ibinabalik ng query na ito ang susunod na dalawang row sa bawat partition gaya ng ipinapakita sa sumusunod:

Ayan na!

Konklusyon

Sa tutorial na ito, natutunan namin kung paano gamitin ang lead() function upang makuha ang susunod na item mula sa kasalukuyang row.