Как я разобрался с оконными функциями в Postgres

Всем привет 👋 В этом посте я расскажу, как шаг за шагом освоил оконные функции в двух популярных СУБД - PostgreSQL

В своем дипломном приложении мне потребовался анализ динамики выполнения задач сотрудниками: 1. Сколько задач выполнено 2. Как меняется эффективность с течением времени 3. Кто лидирует в компании.

И классические GroupBy с бесконечными вложенными запросами и джойнами оказались слишком большими и я терял детали. Оконная функция позволяет посмотреть «вокруг» каждой строки , не сливая их в одну.

Over - ключевое слово для оконной функции Partition by колонка - разбиваем на группы (здесь мы определяем наше окно)

Например посчитать сумму sum(tasks) over (order by task_date) as tasks_total

Можно найти предыдущее значение с помощью lag(tasks,1) over by task_date

Допустим пример с зарплатами: Avg(salary) over (partition by department) as среднее по отделу зп

Почему это удобно - у нас нет лишних джоинов и под запросов.

repost

87

input message

напишите коммент

еще контент автора

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь