- Общие положения 
- Общая информация 
 - Цели введения аналитических функций в Oracle 
 - Классификация видов аналитических функций в Oracle
 
 - Основные технические особенности 
- Место указания аналитических функций в SQL-предложении 
 - Сравнение с обычными функциями агрегирования 
 - Особенности обработки 
 - Разбиение данных на группы для вычислений 
 - Упорядочение в границах отдельной группы 
 - Выполнение вычислений для строк в группе по плавающему окну (интервалу) 
 - Формирование интервалов агрегирования "по строкам" и "по значениям" 
 - Функции FIRST_VALUE и LAST_VALUE для интервалов агрегирования 
 - Интервалы времени
 
 - Виды аналических функций 
 - Функции ранжирования 
 - Функции подсчета долей 
 - Некоторые жизненные примеры аналитических запросов 
- Для типов сегментов, более других расходующих дисковое пространство, выдать главных пользователей, ответственных за такой расход 
 - Выдать список периодов наиболее активного переключения журнальных файлов БД
 
 
 Общие положения
 Общая информация
В версии СУБД Oracle 8.1.6 появился новый класс из 26 функций, названных аналитическими, и получившим дальнейшее развитие в версии 9. Их описания были созданы совместными усилиями фирм IBM, Informix, Oracle и Compaq путем разработки так называемых "улучшений" некоторых конструкций, имеющихся в стандарте SQL1999.
В отличие от обычных скалярных функций аналитические функции берут аргументом SQL-таблицу, представляющую логический промежуточный результат обработки SQL-оператора, где использовано обращение к такой функции, и возвращают в качестве своего результата обычно тоже SQL-таблицу.
Цели введения аналитических функций в Oracle
Техническая цель введения аналитических функций - дать лаконичную формулировку и увеличить скорость выполнения "аналитических запросов" к БД, то есть запросов, имеющих смыслом выявление внутренних соотношений и зависимостей в данных. Более точно, пользование аналитическими функциями может дать следующие выгоды перед обычными SQL-операторами:
- Лаконичную и простую формулировку. Многие аналитические запросы к БД традиционными средствами сложно формулируются, а потому с трудом осмысливаются и плохо отлаживаются.
 - Снижение нагрузки на сеть. То, что раньше могло формулироваться только серией запросов, сворачивается в один запрос. По сети только отправляется запрос и получается окончательный результат.
 - Перенос вычислений на сервер. С использованием аналитических функций нет нужды организовывать расчеты на клиенте; они полностью проводятся на сервере, ресурсы которого могут быть более подходящи для быстрой обработки больших объемов данных.
 - Лучшую эффективность обработки запросов. Аналитические функции имеют алгоритмы вычисления, неразрывно связанные со специальными планами обработки запросов, оптимизированными для большей скорости получения результата. 
 
Стратегическая цель введения в Oracle аналитических функций - дать базовое средство для построения ИС типа "складов данных" (data warehouse, DW), ИС "аналитического характера" (business intelligence systems, BI) или OLAP-систем. По представлениям разработчиков, набор таких базовых средств помимо аналитических функций формируют еще и прочие средства Oracle, такие как
- конструкции ROLLUP, CUBE и связанные с ними в предложениях с GROUP BY
 - материализованные выводимые таблицы (materialized views) 
 
Классификация видов аналитических функций в Oracle
Согласно классификации из документации по Oracle, аналитические функции могут быть следующих видов:
(a) функции ранжирования
(b) статистические функции для плавающего интервала
(c) функции подсчета долей
(d) статистические функции LAG/LEAD с запаздывающим/опережающим аргументом
(e) статистические функции (линейная регрессия и т. д.)