Перейти к содержимому
На этой странице

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

Все темы Python Developer

Какие существуют оконные функции?

Оконные функции в SQL - это функции, которые выполняют вычисления на группах строк, называемых окнами, в пределах результата запроса. Они позволяют выполнять агрегатные функции (например, суммирование, подсчет, вычисление среднего значения) и аналитические функции (например, вычисление ранжирования, отступов, смещений) с учетом порядка и разбиения данных на окна. Оконные функции обычно используются вместе с ключевым словом OVER, которое определяет окно, над которым будет выполняться функция.


Какие оконные функции ранжирования вы знаете в SQL?

Некоторые из распространенных оконных функций ранжирования в SQL:

  1. ROW_NUMBER(): Присваивает каждой строке уникальный числовой ранг в пределах заданного окна, начиная с 1 и увеличиваясь на 1 для каждой следующей строки.

  2. RANK(): Присваивает каждой строке ранг в пределах заданного окна. Если несколько строк имеют одинаковые значения, им присваивается одинаковый ранг, при этом следующий ранг увеличивается на количество строк, имеющих предыдущий ранг.

  3. DENSE_RANK(): Подобно функции RANK(), но не допускает разрывов в последовательности рангов. Если несколько строк имеют одинаковые значения, им присваиваются одинаковые ранги, но следующий ранг не увеличивается на количество строк с предыдущим рангом.

  4. NTILE(n): Делит строки раздела на n групп с максимально близким числом строк и возвращает номер группы.


Как ROW_NUMBER, RANK и DENSE_RANK нумеруют пять строк, если среди значений есть совпадения?

Для значений ORDER BY 10, 20, 20, 30, 40 результаты будут следующими.

  1. ROW_NUMBER(): 1, 2, 3, 4, 5. Номера уникальны; порядок строк с одинаковым значением без дополнительного ключа не определён.

  2. RANK(): 1, 2, 2, 4, 5. Равные значения получают одинаковый ранг, после них остаётся пропуск.

  3. DENSE_RANK(): 1, 2, 2, 3, 4. Равные значения получают одинаковый ранг, пропусков нет.


Знакомы ли с оконными функциями? С рекурсивными подзапросами? Что знаете из этого?

Да, я знаком с оконными функциями и рекурсивными подзапросами в SQL.

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

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

Собеседования: Python

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Python-разработчик, Backend-разработчик на Python. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.