Функция LEAD() на SQL Server

Funkcia Lead Na Sql Server



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

Водеща функция на SQL Server

Водещата функция в SQL Server е аналитична функция, която ви позволява да осъществявате достъп до данни от следващ ред в същия набор от резултати без самообединяване.

Функцията ви позволява да получите достъп до ред при дадено отместване, предхождащ текущия ред. Например, като използвате водещата функция, можете да намерите реда непосредствено след текущия ред, 10-ия ред от текущия ред и т.н.







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



Синтаксис на функцията

Следното описва синтаксиса на функцията lead() в SQL Server:



LEAD (скаларен_израз [,отместване], [по подразбиране])
НАД ([раздел_по_клауза] поръчка_по_клауза)

Следващият списък е поддържаните аргументи и тяхната функционалност:





  1. scalar_expression – този аргумент обозначава върнатата стойност въз основа на дефинираното отместване. Това може да бъде израз от всякакъв тип, който връща една стойност. Стойността на scalar_expression обаче не може да бъде друга аналитична/прозоречна функция.
  2. отместване – това задава колко реда от текущата позиция на реда е извлечена стойността. По подразбиране функцията ще извлече реда непосредствено прилагателно към текущия ред. По същия начин стойността на параметъра за отместване не може да бъде аналитична функция или отрицателно цяло число.
  3. по подразбиране – този параметър задава стойността по подразбиране, ако предоставената стойност на отместване е извън обхвата на целевия дял. По подразбиране функцията ще върне NULL.
  4. PARTITION BY – клаузата partition_by дефинира правилата, които разделят резултатния набор на различни секции. След това функцията се прилага към всеки получен дял.
  5. ORDER BY – това определя логическия ред, в който се прилагат редовете във всеки дял.

Функцията връща типа данни, дефиниран в scalar_expression. Ако върнатата стойност е NULL, функцията връща NULL.

Примерни данни

Нека използваме някои примерни бази данни, за да илюстрираме най-добре как да използваме водещата функция. Първо използвайте заявките, както е показано по-долу:



ПРЕКРАТЯВАНЕ НА БАЗА ДАННИ, АКО СЪЩЕСТВУВА инвентар;

СЪЗДАВАНЕ на инвентаризация на БАЗА ДАННИ;

ИЗПОЛЗВАЙТЕ инвентара;

DROP TABLE IF EXISTS продукти;

CREATE TABLE продукти (
id int identity първичен ключ не е нула,
име на продукт varchar(100),
varchar на производителя (50),
количество int not null,
цена по подразбиране 0,
in_stock малко
);
вмъкване в продукти (име на_продукт, производител, количество, цена, в_наличност)
стойности ('Apple iPad Air', 'Apple', 100, 569.99, 1),
(„Samsung Galaxy Z Flip 4“, „Samsung“, 302, 1569,00, 1),
(„Sony Playstation 5“, „Sony“, 500, 499,99, 1),
(„Samsung Galaxy Watch-5 Pro“, „Samsung“, 600, 209/.99, 1),
(„Apple Watch Series 6“, „Apple“, 459, 379.90, 1),
(„Apple AirPods Pro“, „Apple“, 200, 199,99, 1),
('55' Class S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
(„Odyssey Ark Quantum Mini-LED извит екран за игри“, „Samsung“, 50, 2999.90, 1);

Получената таблица е както е показано:

Пример 1 – Използване на функцията lead() на SQL Server над набор от резултати

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

изберете
Име на продукта,
производител,
количество,
цена,
олово (цена,
1) над (
подреди по количество)
от
продукти;

Резултатна таблица:

Тъй като няма ред от последната колона, функцията връща NULL.

Пример 2 – Използване на функцията lead() на SQL Server върху набор от дялове

Можем също да извлечем следващия продукт в даден дял. Например, можем да разделим данните по-горе въз основа на производителя и да приложим функцията lead() във всеки дял

Примерна илюстрация е както е показано:

изберете
Име на продукта,
производител,
количество,
цена,
олово (цена,
1) над (
преграда по производител
подреди по количество)
от
продукти;

Заявката по-горе трябва да раздели редовете въз основа на производителя и да извлече следващата цена за стойностите във всеки дял.

В този случай има три дяла.

Заключение

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