TGViewer
SQL Ready | Базы Данных SQL Ready | Базы Данных @sql_ready · 17.5K subscribers
Post #983 2.64K
Сравнение с предыдущей строкой с LAG()

Хотите узнать, как меняется значение от предыдущей записи? В аналитике это частая задача, и решается с помощью функции 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 | #практика
  • ❤ 16
  • 👍 8
  • 🔥 7
More from @sql_ready
  1. Oct 13, 2026🖥 Oracle - ограничение количества строк и выборка Top-N! Получение первых N строк с FETCH…
  2. Oct 12, 2026Обновляйте несколько колонок одним подзапросом! Вместо нескольких одинаковых подзапросов:…
  3. Oct 9, 2026❤️ sqlite-postgres-cours — большой практический курс по базам данных! Материал ведёт от пе…
  4. Oct 8, 2026Почему UNIQUE допускает несколько NULL в PostgreSQL! Ограничение UNIQUE гарантирует уникал…
  5. Oct 7, 2026📂 Шпаргалка по паттернам распределённых систем! Например, Replication повышает доступност…
  6. Oct 6, 2026Проверяйте связи с учётом периода! В PostgreSQL 18 связь может учитывать ещё и период его…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →