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

Funkcia Sql Server Lead



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

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

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

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







Эта функция побуждает разработчиков баз данных выполнять сравнение строк без сложных задач, таких как объединение, использование представлений и т. д.



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

Ниже показан синтаксис функции lead() в SQL Server:



LEAD (скалярное_выражение [, смещение], [по умолчанию])
OVER ( [ раздел_по_клаузе ] порядок_по_клаузе )

Следующий список — это поддерживаемые аргументы и их функциональные возможности:





  1. скалярное_выражение — этот аргумент обозначает возвращаемое значение на основе определенного смещения. Это может быть выражение любого типа, которое возвращает одно значение. Однако значение scalar_expression не может быть другой аналитической/оконной функцией.
  2. смещение — это устанавливает, сколько строк из текущей позиции строки извлекается значение. По умолчанию функция сразу извлечет строку прилагательную к текущей строке. Точно так же значение параметра offset не может быть аналитической функцией или отрицательным целым числом.
  3. default — этот параметр устанавливает значение по умолчанию, если предоставленное значение смещения выходит за рамки целевого раздела. По умолчанию функция возвращает NULL.
  4. PARTITION BY — предложение partition_by определяет правила, которые делят результирующий набор на различные разделы. Затем функция применяется к каждому результирующему разделу.
  5. ORDER BY — определяет логический порядок, в котором применяются строки в каждом разделе.

Функция возвращает тип данных, определенный в scalar_expression. Если возвращаемое значение равно NULL, функция возвращает NULL.

Образец данных

Давайте воспользуемся некоторыми примерами баз данных, чтобы лучше всего проиллюстрировать, как использовать функцию опережения. Сначала используйте запросы, как показано ниже:



УДАЛИТЬ БАЗУ ДАННЫХ, ЕСЛИ СУЩЕСТВУЕТ инвентарь;

СОЗДАТЬ БАЗУ ДАННЫХ инвентаризации;

ИСПОЛЬЗОВАТЬ инвентарь;

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ продукты;

СОЗДАТЬ ТАБЛИЦУ продуктов (
id int identity первичный ключ не нулевой,
имя_продукта varchar(100),
производитель varchar(50),
количество int не равно нулю,
цена по умолчанию 0,
бит в наличии
);
вставить в товары (название_продукта, производитель, количество, цена, наличие на складе)
значения («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/0,99, 1),
(«Apple Watch Series 6», «Apple», 459, 379,90, 1),
(«Apple AirPods Pro», «Apple», 200, 199,99, 1),
(«55-дюймовый класс 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. Использование функции SQL Server lead() для набора разделов

Мы также можем получить следующий продукт в данном разделе. Например, мы можем разбить приведенные выше данные на основе производителя и применить функцию lead() в каждом разделе.

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

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

Приведенный выше запрос должен разделить строки на основе производителя и получить следующую цену для значений в каждом разделе.

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

Вывод

В этом посте вы разобрались со строительными блоками функции lead() в SQL Server. Вы также узнали, как использовать функцию lead() для набора результатов и разделов.