LEAD
Вернуть значение из следующей строки окна.
LEAD(expression, offset, default) OVER (PARTITION BY ... ORDER BY ...)
Используйте для сравнения текущего заказа со следующим заказом поставщика.
Функции смещения и выбора позволяют смотреть не только на текущую строку, но и на соседние или крайние строки внутри окна.
LAG() возвращает значение из предыдущей строки, а LEAD() — из следующей строки в порядке, заданном внутри OVER.
FIRST_VALUE(), LAST_VALUE() и NTH_VALUE() выбирают первое, последнее или n-е значение в окне.
Ключевая конструкция урока: function(column) OVER (PARTITION BY group_column ORDER BY sort_column).
Минимальный пример: LAG(creation_date) OVER (PARTITION BY supplier_id ORDER BY creation_date) показывает предыдущую дату заказа поставщика.
Топ-3 ошибки: забыть ORDER BY, перепутать направление LEAD/LAG, использовать LAST_VALUE без явной рамки окна.
Команды и функции ниже взяты из темы урока и оформлены как быстрый справочник.
LEADВернуть значение из следующей строки окна.
LEAD(expression, offset, default) OVER (PARTITION BY ... ORDER BY ...)
Используйте для сравнения текущего заказа со следующим заказом поставщика.
LAGВернуть значение из предыдущей строки окна.
LAG(expression, offset, default) OVER (PARTITION BY ... ORDER BY ...)
Главная функция для расчёта интервала между текущим и прошлым событием.
FIRST_VALUEВернуть первое значение в окне.
FIRST_VALUE(expression) OVER (PARTITION BY ... ORDER BY ...)
Если сортировать цену по возрастанию, получим минимальную цену группы.
LAST_VALUEВернуть последнее значение в окне.
LAST_VALUE(expression) OVER (... ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
Для ожидаемого результата часто нужна явная рамка окна.
NTH_VALUEВернуть n-е значение в окне.
NTH_VALUE(expression, n) OVER (PARTITION BY ... ORDER BY ...)
Полезно для третьей цены месяца или другого фиксированного положения.
Полный справочник курса: SQL Reference. Документация по MongoDB в этом уроке не используется.