Backend-разработчик в SmartData · 18.05
Как я разобрался с оконными функциями в 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 среднее по отделу зп
Почему это удобно - у нас нет лишних джоинов и под запросов.
еще контент автора
еще контент автора
Backend-разработчик в SmartData · 18.05
войдите, чтобы увидеть
и подписаться на интересных профи