Делать то, что доставляет удовольствие, — значит быть свободным (Ф. Вольтер).

Функция LEAD в MySQL

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
18 октября 2019
MySQL. Математические функции
Описание: в этой статье вы узнаете, как использовать функцию LEAD() в MySQL для доступа к данным следующей строки из текущей строки в том же наборе результатов.

 

Обзор функции LEAD() в MySQL

Функция LEAD() является оконной функцией, что позволяет смотреть вперед количество строк и доступ к данным этой строки из текущей строки.

Функция LEAD() очень полезна для вычисления разницы между текущей строкой и следующей строкой в ​​том же наборе результатов.

Ниже показан синтаксис LEAD():

LEAD(<expression>[,offset[, default_value]]) OVER (
PARTITION BY (expr)
ORDER BY (expr)
)

 

Expression

Функция LEAD() возвращает значение expression из строки offset упорядоченного раздела.

 

Offset

offset это число строк вперед от текущей строки, из которой можно получить значение.

offset должен быть неотрицательным целым числом. Если offset равен нулю, то функция LEAD() оценивает expression как текущую строку.

В случае, если вы пропустите offset, то функция LEAD() использует один по умолчанию.

 

Default_value

Если нет следующей строки, функция LEAD() возвращает default_value. Например, если offset равен единице, возвращаемое значение последней строки является default_value.

Если вы не укажете default_value, функция вернется  NULL.

 

Раздел PARTITION BY

Предложение PARTITION BY разделяет строки в наборе результатов на разделы, к которым применяется функция LEAD().

Если предложение PARTITION BY не указано, все строки в наборе результатов обрабатываются как один раздел.

 

Предложение ORDER BY

Предложение ORDER BY определяет порядок строк в разделах до применения функции LEAD().

 

Пример функции LEAD() в MySQL

Мы будем использовать таблицы orders и customers из базы данных для демонстрации:

Следующее утверждение находит дату заказа и следующую дату заказа каждого клиента:

SELECT
customerName,
orderDate,
LEAD(orderDate,1) OVER (
PARTITION BY customerNumber
ORDER BY orderDate ) nextOrderDate
FROM
orders
INNER JOIN customers USING (customerNumber);

 

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

Как только последующая строка пересекает границу раздела, значение nextOrderDate последней строки каждого раздела равно NULL.

В этой статье вы узнали, как использовать функцию LEAD() вMySQL для доступа к данным следующей строки из текущей строки.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close