Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

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

Все темы Data Scientist

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

Оконные функции в 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 запроса. Они часто используются для выполнения итеративных вычислений, обхода древовидных структур данных или генерации последовательностей чисел.

Эта страница была полезной?