ФУНКЦИИ LEAD() И LAG() В POSTGRESQL

  • Михаил
  • 12 мин. на прочтение
  • 153
  • 11 Nov 2022
  • 11 Nov 2022

Функции LEAD() и LAG() возвращают значения из следующей строки и предыдущей строки в таблице соответственно. Эти функции позволяют получить доступ к данным из следующей строки без использования SELF JOIN. Функции LEAD и LAG вместе с PARTITION BY получают следующую и предыдущую строки группы внутри таблицы.

Функция LEAD() в Postgresql: Функция LEAD() возвращает значения из следующей строки в таблице

Функция LAG() в Postgresql: функция LAG() возвращает значения из предыдущей строки в таблице

Таблица BASKET , которую мы используем для изображения, показана ниже .

Функция опережения и отставания в postgresql 0

 

 

LEAD() в postgresql:

LEAD в postresql возвращает следующую строку в таблице

SELECT *,LEAD (price,1) OVER (ORDER BY price) AS next_price
FROM basket;

Итак, результирующая таблица

Функция опережения и отставания в postgresql 1

 

LEAD с PARTITION BY:

LEAD с PARTITION BY в postresql возвращает следующую строку в группе

SELECT *,LEAD (price,1) OVER (PARTITION BY ITEM_GROUP ORDER BY price) AS groups_next_price
FROM basket;
Функция опережения и отставания в postgresql 2

 

LAG() в postgresql:

LAG в postresql возвращает предыдущую строку в таблице

SELECT *,LAG (price,1) OVER (ORDER BY price) AS previous_price
FROM basket;

Итак, результирующая таблица

Функция опережения и отставания в postgresql 3

 

LAG с PARTITION BY:

LAG с PARTITION BY в postresql возвращает предыдущую строку в группе

SELECT *,LAG (price,1) OVER (PARTITION BY ITEM_GROUP ORDER BY price) AS
groups_previous_price FROM basket;

Таким образом, результирующая таблица будет

Функция опережения и отставания в postgresql 4