Хотите узнать, как меняется значение от предыдущей записи? В аналитике это частая задача, и решается с помощью функции
LAG()Создадим таблицу:
CREATE TABLE sales (
id INT,
customer VARCHAR(100),
amount DECIMAL(10,2)
);
Запрос с LAG():
SELECT id, customer, amount,
LAG(amount, 1) OVER (
PARTITION BY customer
ORDER BY id
) AS prev_amount
FROM sales;
Пример для клиента с 3 заказами:
id | customer | amount | prev_amount
------------------------------------
10 | Ivanov | 500 | NULL
12 | Ivanov | 700 | 500
15 | Ivanov | 650 | 700
Функция
LAG() берёт значение из предыдущей строки в пределах группы. NULL появляется, если предыдущей строки нет. Это позволяет быстро вычислять разницу между заказами:SELECT id, customer, amount,
amount - LAG(amount, 1) OVER (PARTITION BY customer ORDER BY id) AS diff
FROM sales;
🔥 Так что
LAG — незаменимый инструмент для анализа изменений без подзапросов и джойнов.➡️ SQL Ready | #практика