Встречается на собеседованиях • сегодня

Что можешь сказать про оконные функции

Оконные функции предоставляют мощные возможности для выполнения различных расчётных операций с использованием данных, охватывающих определённый диапазон строк, которые связаны с текущей строкой. Эти функции называются "оконными", потому что оперируют "окном" строк, ограниченным в соответствии с определёнными условиями. Оконные функции особенно полезны при выполнении агрегаций, при которых нужно сохранить детализацию данных, что обычно недостижимо с помощью обычных агрегатных функций (`SUM`, `COUNT`, `AVG` и т.д.), применяемых в группировках.

Ключевые аспекты:
1. Определение окна: Окно определяется с помощью конструкции `OVER`, которая может включать в себя:

  • Порядок следования строк (`ORDER BY`).
  • Разбиение на группы или партиции (`PARTITION BY`).
  • Ограничения окна (`ROWS` или `RANGE`), определяющие начальную и конечную точки окна относительно текущей строки.

2. Типы оконных функций:

  • Агрегатные функции: `SUM`, `AVG`, `MIN`, `MAX`, `COUNT` и т.д., которые обычно используются для агрегации данных в рамках окна.
  • Функции ранжирования: `ROW_NUMBER`, `RANK`, `DENSE_RANK`, эти функции присваивают уникальные или повторяющиеся номера строкам в зависимости от их значений по определённым полям.
  • Функции смещения: `LEAD`, `LAG`, позволяют получить значение из строки, расположенной на определённое количество позиций до или после текущей строки в рамках окна.
  • Статистические и аналитические функции: например, `PERCENT_RANK`, `CUME_DIST`.

Рассмотрим простой пример, который показывает использование оконной функции для расчёта скользящего среднего:

text
```sql
SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS moving_average
FROM
  sales_data;
```

Этот запрос вычисляет скользящее среднее продаж (`sales`) за три дня: за предыдущий, текущий и следующий день.

Преимущества использования:

  • Гибкость: Оконные функции позволяют выполнять сложные вычисления и аналитику без необходимости разбивать запросы на множество частей или использования сложных подзапросов.
  • Эффективность: Выполнение агрегаций и аналитики без потери уровня детализации данных в исходной таблице.

Оконные функции — это как магический инструмент, который позволяет смотреть на группу данных сквозь "окно" и делать различные вычисления, не смешивая данные из разных "окон". Это очень удобно для анализа трендов, расчёта агрегатов и других сложных задач, связанных с данными.

May 22, 2024, easyoffer

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы