Зачем нужны оконные функции?


#1

Слышал, что есть такая вещь, как оконные функции. Пытался когда-то даже изучить, но материал показался что-то больно уж сложным, и это дело я забросил. Мне трудно заставить себя изучать что-то, если я не понимаю, зачем это нужно. Не могли бы вы объяснить, для каких задач нужны оконные функции? Что с ними можно сделать такого, чего нельзя без них?


#2

Попробуйте посмотреть в документации, там даже специальный раздел есть: https://postgrespro.ru/docs/postgresql/10/tutorial-window


#3

Нужны, например, для того, чтобы объеденить результаты выборки в строку, найти среднее по какому то критерию, подсчитать счетчик опять же таки по критерию и тд


#4

Что с ними можно сделать такого, чего нельзя без них?

Почти всё, что можно сделать оконными функциями, можно сделать без них, “классическим” SQL (но не наоборот). Дело тут не в принципиальных возможностях, а в удобстве (ну и производительности).

Т.е. оконные функции — это другой, (гораздо) более удачный подход к написанию аналитических запросов (причём настолько, что некоторые даже утверждают: “There was SQL before window functions and SQL after window functions: that’s how powerful this tool is.”).