Menu
Coddy logo textTech

Функции LEAD и LAG

Часть раздела Основы путешествия по SQL на Coddy. Урок 61 из 72.

Функции LEAD и LAG позволяют получить доступ к значению текущей строки на n шагов назад или на n шагов вперёд.

Например, если мы хотим вычислить соотношение выручки компании в текущей строке и месяц назад, мы можем извлечь значение за предыдущий месяц:

idrevenuemonth
15325
24926
33937
47238
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id

В результате будет создана следующая таблица:

idrevenueprev_month_revenue
1532 
2492532
3393492
4723393

Таким образом, мы можем вычислить соотношение prev_month_revenue/revenue.

Если бы вместо этого мы использовали функцию LEAD, она брала бы выручку следующего месяца для каждой строки:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id
idrevenuenext_month_revenue
1532492
2492393
3393723
4723 
challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • air_conditioners: id, efficiency, strength, month

Сравните эффективность каждого кондиционера с предыдущим.

Напишите запрос, который показывает эффективность каждого кондиционера вместе с эффективностью предыдущего установленного кондиционера (на основе id). Также вычислите разницу в эффективности между текущим и предыдущим кондиционером. Отсортируйте результат по id и efficiency в порядке возрастания.

Ожидаемые столбцы вывода:

  • id
  • efficiency
  • previous_efficiency (с использованием LAG)
  • efficiency_difference (текущая эффективность - предыдущая эффективность)

Наконец, оберните запрос и отфильтруйте первую строку, в которой previous_efficiency (и, следовательно, efficiency_difference) является пустым значением, то есть NULL:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency IS NOT NULL

Попробуйте сами

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница SQL