Справочник по функциям и операторам SQL
LAG
Возвращает значение из предыдущей строки в пределах определенного окна.
Синтаксис
LAG(expression, offset, default) OVER (PARTITION BY column1, column2, ... ORDER BY column1 [ASC|DESC], column2 [ASC|DESC])
- expression: Выражение, значение которого будет возвращено
- offset: (необязательно) Количество строк до текущей строки, откуда будет возвращено значение. По умолчанию offset равен 1
- default: (необязательно) Значение, возвращаемое, если offset выходит за пределы набора строк. По умолчанию default равен NULL
- PARTITION BY: (необязательно) Разделяет набор строк в группы, для каждой из которых функция LAG будет вычислена независимо
- ORDER BY: Упорядочивает строки внутри каждой группы (если используется PARTITION BY) или всего набора строк, определяя порядок для смещения
Например:
SELECT id, company_id, salary,
LAG(salary, 1, NULL) OVER (PARTITION BY company_id ORDER BY salary) AS previous_salary
FROM Client;
-- Результат: Столбец previous_salary с предыдущей зарплатой в пределах каждой компании; если предыдущей строки нет, возвращает 0
Пример
Сможете решить задачу с использованием LAG?
Решать бесплатно!