SQL: Оконные функции

Теория: FIRST_VALUE и LAST_VALUE

Оконные функции FIRST_VALUE и LAST_VALUE являются аналитическими функциями в SQL, которые позволяют получить первое и последнее значение внутри заданного окна. Эти функции часто используются для анализа данных внутри группировок или упорядоченных наборов данных.

Функция FIRST_VALUE возвращает первое значение внутри заданного окна, а функция LAST_VALUE - последнее значение. Самым важным параметром для этих функций является ORDER BY, определяющий порядок строк внутри окна.

Пример использования FIRST_VALUE и LAST_VALUE:

SELECT
    s.id,
    s.sale_date,
    s.price,
    s.quantity,
    sh.region,
    c.category,
    (s.quantity * s.price) AS sale_amount,
    FIRST_VALUE(s.price * s.quantity)
        OVER (PARTITION BY sh.region ORDER BY s.sale_date)
    AS frst_value,
    LAST_VALUE(s.price * s.quantity)
        OVER (PARTITION BY sh.region ORDER BY s.sale_date)
    AS lst_value
FROM sales AS s
LEFT JOIN customer AS c ON s.customer_id = c.customer_id
LEFT JOIN shop AS sh ON s.shop_id = sh.shop_id
ORDER BY s.id;
idsale_datepricequantityregioncategorysale_amountfrst_valuelst_value
12023-01-01T00:00
.000Z
41Moscowwith discount cards444
22023-01-01T00:00
.000Z
22Moscowwith discount cards444
32023-01-01T00:00
.000Z
11Moscowwith discount cards141
42023-01-01T00:00
.000Z
21Moscowwith discount cards242
52023-01-02T00:00
.000Z
31Moscowwith discount cards343

View on DB Fiddle

В примере выше мы собрали окна по регионам и отсортировали их по дате продажи. Далее мы использовали FIRST_VALUE и LAST_VALUE для получения первой и последней суммы продажи внутри каждого окна. Это позволяет нам сравнить сумму продажи с первой или последней продажей в регионе

Выводы

  • Оконные функции FIRST_VALUE и LAST_VALUE используются в SQL для получения первого и последнего значения из определенного столбца внутри окна.
  • FIRST_VALUE возвращает первое значение в окне в соответствии с порядком сортировки, а LAST_VALUE возвращает последнее значение.
  • Обе функции могут быть использованы в комбинации с другими оконными функциями, такими как ROW_NUMBER или RANK, для более гибкого анализа данных.
  • FIRST_VALUE и LAST_VALUE могут быть полезны при работе с временными рядами, анализе трендов или при необходимости найти первое и последнее значение в группе данных.

Рекомендуемые программы

Завершено

0 / 9