SQL Lead функция

Sql Lead Funkcia



Функцията SQL lead() ви позволява да получите достъп до следващия ред от текущия ред при определено отместване. Накратко, функцията lead() ви позволява да получите достъп до следващия ред от текущия. Като посочите стойността на отместването, можете да получите достъп до следващите 1, 2, 3 и т.н. редове от текущия.

Това е обратното на функцията lag(), която ви позволява да получите достъп до предишните редове.







Функция SQL Lead().

Синтаксисът на функцията е както следва:



LEAD(стойност_израз, отместване [, по подразбиране])
НАД (
[ДЯЛ ПО partition_expression]
ПОРЪЧАЙТЕ ПО израз_за_сортиране [ASC | DESC]
);

Следните са подкрепените аргументи:



  1. стойностен_израз – Указва върнатата стойност на предходния ред. Изразът трябва да се изчисли на една стойност.
  2. изместване – Указва колко реда напред от текущия ред за достъп.
  3. по подразбиране – Задава стойността по подразбиране, ако отместването е извън обхвата на дяла. По подразбиране стойността е зададена на NULL.
  4. Разделяне по – Указва как да се разделят данните.
  5. Подредени по – Задава формата на реда за редовете във всеки дял.

Настройка на примерни данни

Преди да се потопим в работата на функцията lead(), нека започнем с настройка на основната таблица за демонстрационни цели.





CREATE TABLE продукти (
product_id INT PRIMARY KEY AUTO_INCREMENT,
име на продукт VARCHAR(255),
категория VARCHAR(255),
цена DECIMAL(10, 2),
количество INT,
дата на изтичане DATE,
баркод BIGINT
);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Шапка на готвач 25 см“,
'пекарна',
24.67,
57,
„2023-09-09“,
2854509564204);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Пъдпъдъчи яйца – консерва“,
'килер',
17,99,
67,
„29 септември 2023 г.“,
1708039594250);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Кафе – Egg Nog Capuccino“,
'пекарна',
92.53,
10,
„22 септември 2023 г.“,
8704051853058);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Круша – бодлива“,
'пекарна',
65.29,
48,
„23 август 2023 г.“,
5174927442238);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
ценности („Паста – ангелска коса“,
'килер',
48.38,
59,
„2023-08-05“,
8008123704782);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Вино – Prosecco Valdobiaddene“,
'произвеждам',
44.18,
3,
„13 март 2023 г.“,
6470981735653);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Сладкиши – френски мини асорти“,
'килер',
36.73,
52,
„2023-05-29“,
5963886298051);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Портокал – консерва, мандарина“,
'произвеждам',
65,0,
1,
„20.04.2023“,
6131761721332);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности („Свинско – плешка“,
'произвеждам',
55.55,
73,
'2023-05-01',
9343592107125);

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)

стойности („Dc Hikiage Hira Huba“,
'произвеждам',
56.29,
53,
„14.04.2023“,
3354910667072);

Пример 1:

В този случай имаме достъп до таблицата „продукти“, която съдържа информацията за продукта. Да предположим, че искаме да получим следващия баркод от текущия ред.

Можем да използваме функцията lead() както следва:



Да предположим, че имаме таблица, която съдържа информация за служител, както следва:

изберете
Име на продукта,
цена,
водещ (баркод) над (разделяне по категория
подредени по
price asc) като next_item
от
продукти p;

Даденият код разделя данните въз основа на категорията. След това извлича следващия баркод в дяла с помощта на функцията lead().

Резултатът е както следва:

Пример 2:

Ако няма следващ ред в определена колона (извън границите), функцията задава стойността на NULL, както е показано в предишния пример.

За да зададем стойност по подразбиране за всеки достъп извън обхвата, можем да направим следното:

изберете
Име на продукта,
цена,
lead(barcode, 1, 'N/A') over (разделяне по категория
подредени по
price asc) като next_item
от
продукти p;

Задаваме стойността по подразбиране на „N/A“. Това трябва да замени всяка стойност извън границите, както е показано в следния изход:

ЗАБЕЛЕЖКА : Задаването на отместването на 1 е подобно на това да не посочите никаква стойност.

Пример 3:

Да предположим, че искате да получите достъп до следващите два реда от текущия ред. Можем да направим това, като зададем стойността на отместването на 2.

Примерна заявка е илюстрирана по-долу:

изберете
Име на продукта,
цена,
lead(barcode, 2, 'N/A') over (разделяне по категория
подредени по
price asc) като next_item
от
продукти p;

Тази заявка връща следващите два реда във всеки дял, както е показано по-долу:

Ето го!

Заключение

В този урок научихме как да работим с функцията lead(), за да получим следващия елемент от текущия ред.