Оконные функции в SQL делятся на четыре вида: 1
- Агрегатные. 1 Проводят вычисления над строками и выдают единственный результат для группы. 1 К ним относятся SUM(), AVG(), MIN(), MAX(). 1
- Ранжирующие. 1 Определяют ранги строк, основываясь на заданном условии. 1 В этот вид входят RANK(), DENSERANK(), ROWNUMBER(). 1
- Аналитические. 1 Рассчитывают значения всех строк, основываясь на других строках этой же группы. 1 Сюда относятся CUMEDIST(), PERCENTRANK(), PERCENTILECONT() и PERCENTILEDISC(). 1
- Функции смещения. 1 Определяют значения на основе движущегося окна строк. 1 К ним относятся LAG(), LEAD(), FIRSTVALUE(), LASTVALUE(). 1
Разница между типами оконных функций заключается в их функциях и задачах, которые они выполняют:
- Агрегатные функции полезны для расчёта усреднённых значений, например, среднего значения продаж за квартал или максимальной цены товара за день. 1
- Ранжирующие функции позволяют ранжировать строки в таблице на основе определённого критерия, например, по имени или по цене. 1
- Аналитические функции помогают рассчитать значения всех строк, основываясь на других строках этой же группы, для анализа, например, временных рядов. 1
- Функции смещения позволяют брать данные из предыдущей или следующей строки окна, что полезно для сравнения текущей строки с соседними, например, для анализа связей данных. 12