Fungsi Utama SQL

Fungsi Utama Sql



Fungsi SQL lead() membolehkan anda mengakses baris seterusnya daripada baris semasa pada offset tertentu. Ringkasnya, fungsi lead() membolehkan anda mengakses baris seterusnya daripada baris semasa. Dengan menentukan nilai offset, anda boleh mengakses baris 1, 2, 3, dsb., seterusnya daripada baris semasa.

Ia adalah bertentangan dengan fungsi lag() yang membolehkan anda mengakses baris sebelumnya.







Fungsi SQL Lead().

Sintaks fungsi adalah seperti berikut:



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

Berikut adalah hujah yang disokong:



  1. nilai_ungkapan – Ia menentukan nilai pulangan baris sebelumnya. Ungkapan mesti menilai kepada satu nilai.
  2. mengimbangi – Ia menentukan bilangan baris ke hadapan dari baris semasa untuk diakses.
  3. lalai – Ia menetapkan nilai lalai jika offset berada di luar skop partition. Secara lalai, nilai ditetapkan kepada NULL.
  4. Pembahagian oleh – Ia menentukan cara membahagikan data.
  5. Perintah oleh – Ia menetapkan format pesanan untuk baris dalam setiap partition.

Contoh Persediaan Data

Sebelum kita menyelami cara kerja fungsi lead(), mari kita mulakan dengan menyediakan jadual asas untuk tujuan demonstrasi.





CIPTA produk JADUAL (
product_id INT PRIMARY KUNCI AUTO_INCREMENT,
nama_produk VARCHAR(255),
kategori VARCHAR(255),
harga PERPULUHAN(10, 2),
kuantiti INT,
tarikh tamat tempoh DATE,
kod bar BIGINT
);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Topi Chef 25cm',
'kedai roti',
24.67,
57,
'2023-09-09',
2854509564204);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Telur Puyuh - Dalam Tin',
'pantry',
17.99,
67,
'2023-09-29',
1708039594250);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Kopi - Egg Nog Capuccino',
'kedai roti',
92.53,
10,
'2023-09-22',
8704051853058);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Pear - Prickly',
'kedai roti',
65.29,
48,
'2023-08-23',
5174927442238);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Pasta - Rambut Malaikat',
'pantry',
48.38,
59,
'2023-08-05',
8008123704782);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Wine - Prosecco Valdobiaddene',
'menghasilkan',
44.18,
3,
'2023-03-13',
6470981735653);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Pastri - French Mini Assorted',
'pantry',
36.73,
52,
'2023-05-29',
5963886298051);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Oren - Tin, Mandarin',
'menghasilkan',
65.0,
1,
'2023-04-20',
6131761721332);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)
nilai ('Babi - Bahu',
'menghasilkan',
55.55,
73,
'2023-05-01',
9343592107125);

masukkan
ke dalam
produk (nama_produk,
kategori,
harga,
kuantiti,
tarikh luput,
kod bar)

nilai ('Dc Hikiage Hira Huba',
'menghasilkan',
56.29,
53,
'2023-04-14',
3354910667072);

Contoh 1:

Dalam kes ini, kami mempunyai akses kepada jadual 'produk' yang mengandungi maklumat produk. Katakan kita ingin mendapatkan kod bar seterusnya daripada baris semasa.

Kita boleh menggunakan fungsi lead() seperti berikut:



Katakan kita mempunyai jadual yang mengandungi maklumat pekerja seperti berikut:

pilih
Nama Produk,
harga,
lead(barcode) over (partition by category
perintah oleh
harga asc) sebagai next_item
daripada
produk p;

Kod yang diberikan membahagikan data berdasarkan kategori. Ia kemudian mengambil kod bar seterusnya dalam partition menggunakan fungsi lead().

Output yang terhasil adalah seperti berikut:

Contoh 2:

Jika tiada baris seterusnya dalam lajur tertentu (di luar sempadan), fungsi menetapkan nilai kepada NULL seperti yang ditunjukkan dalam contoh sebelumnya.

Untuk menetapkan nilai lalai bagi sebarang akses di luar skop, kami boleh melakukan perkara berikut:

pilih
Nama Produk,
harga,
lead(barcode, 1, 'N/A') over (partition by category
perintah oleh
harga asc) sebagai next_item
daripada
produk p;

Kami menetapkan nilai lalai kepada 'N/A'. Ini harus menggantikan mana-mana nilai luar terikat seperti yang ditunjukkan dalam output berikut:

CATATAN : Menetapkan offset kepada 1 adalah serupa dengan tidak menyatakan sebarang nilai.

Contoh 3:

Katakan anda ingin mengakses dua baris seterusnya daripada baris semasa. Kita boleh melakukannya dengan menetapkan nilai offset kepada 2.

Contoh pertanyaan digambarkan dalam perkara berikut:

pilih
Nama Produk,
harga,
plumbum(kod bar, 2, 'N/A') di atas (partition mengikut kategori
perintah oleh
harga asc) sebagai next_item
daripada
produk p;

Pertanyaan ini mengembalikan dua baris seterusnya dalam setiap partition seperti yang ditunjukkan dalam yang berikut:

Itulah anda mempunyainya!

Kesimpulan

Dalam tutorial ini, kami belajar cara bekerja dengan fungsi lead() untuk mendapatkan item seterusnya daripada baris semasa.