Если бы у нас были только агрегатные функции, мы были бы принуждены постоянно делать выбор: видеть детальные данные или агрегированные? Аналитические функции, известные также как оконные функции или over-функции, позволяют одновременно получить и то и другое. С их помощью можно видеть данные, агрегированные по множеству строк, рядом с детальными данными.
Обычные, или скалярные, функции принимают на вход значения столбцов одной — текущей — строки курсора. Агрегатные функции принимают на вход значения столбцов всех строк курсора, определяемых where
и group by
(или их отсутствием). Оконные функции принимают на вход значения столбцов множества строк, определяемого в предложении over
и зависящего от текущей строки.
Рассмотрим оконные функции на примере СУБД PosgreSQL 15.