Вы хотите сравнить текущую метрику с метрикой следующего периода во временном ряду. Какая оконная функция возвращает «следующее» значение относительно текущей строки по заданному порядку сортировки?

ALEAD(x) возвращает значение x из следующей строки относительно текущей по порядку окна
BLAG(x) возвращает значение x из предыдущей строки относительно текущей по порядку окна
CRANK() возвращает порядковый ранг строки внутри окна с пропусками номеров при тайах
DROW_NUMBER() возвращает порядковый номер строки внутри окна без пропусков при тайах
Правильный ответ. LEAD смотрит вперёд по окну на N строк, а LAG — назад; обе зависят от заданного порядка сортировки.

Разбор

В окне ... OVER (PARTITION BY ... ORDER BY ...) функция LEAD(x) возвращает значение x из следующей строки относительно текущей по заданному порядку, а LAG(x) — из предыдущей. Это базовый приём для сравнений «период к периоду» вперёд или назад. RANK и ROW_NUMBER решают другую задачу — нумеруют строки, а не достают значение соседней строки.

Проверь себя · 1/3разбор после ответа
Хотите добавить к каждой транзакции колонку «доля от общей суммы транзакций этого пользователя» и при этом не терять детализацию по транзакциям. Какой фрагмент корректен?
Тренировать SQL в Telegram

Ещё вопросы по теме «Оконные функции»