Репост из: This is Data
Почему оконные функции - это суперсила аналитика?
Знакомы с проблемой? Вам нужно посчитать долю каждой продажи в общей выручке за месяц, сравнить сегодняшний показатель со вчерашним или составить рейтинг товаров внутри категории. Обычные агрегатные функции (с GROUP BY или без него) «схлопывают» строки и детализация теряется.
Здесь на сцену выходят оконные функции. Их суперсила в том, что они производят вычисления над группой строк (окном), но не сливают их в одну, а добавляют результат как новый столбец к каждой исходной строке.
Проще на примере:
-- Обычная сумма возвращает одну строку
SELECT SUM(revenue) FROM orders;
-- Оконная сумма добавляет общий итог к КАЖДОЙ строке
SELECT
*,
SUM(revenue) OVER() AS total_revenue
FROM orders;
Аналогия:
Представьте, что вы учитель.
▪Обычный запрос - это выставить одну общую среднюю оценку всему классу.
▪Оконная функция - это рядом с каждой личной оценкой ученика написать средний балл по классу для сравнения.
Где использовать оконки?
При подсчете скользящего среднего, накопительных итогов, ранжирования, расчете долей, сравнения строк.
В следующем посте подробнее погрузимся в синтаксис и научимся создавать окна.
А пока поделитесь насколько сложно вам было осваивать оконные функции?
🤯 - сложно
🥱 - изи
#харды #sql
Знакомы с проблемой? Вам нужно посчитать долю каждой продажи в общей выручке за месяц, сравнить сегодняшний показатель со вчерашним или составить рейтинг товаров внутри категории. Обычные агрегатные функции (с GROUP BY или без него) «схлопывают» строки и детализация теряется.
Здесь на сцену выходят оконные функции. Их суперсила в том, что они производят вычисления над группой строк (окном), но не сливают их в одну, а добавляют результат как новый столбец к каждой исходной строке.
Проще на примере:
-- Обычная сумма возвращает одну строку
SELECT SUM(revenue) FROM orders;
-- Оконная сумма добавляет общий итог к КАЖДОЙ строке
SELECT
*,
SUM(revenue) OVER() AS total_revenue
FROM orders;
Аналогия:
Представьте, что вы учитель.
▪Обычный запрос - это выставить одну общую среднюю оценку всему классу.
▪Оконная функция - это рядом с каждой личной оценкой ученика написать средний балл по классу для сравнения.
Где использовать оконки?
При подсчете скользящего среднего, накопительных итогов, ранжирования, расчете долей, сравнения строк.
В следующем посте подробнее погрузимся в синтаксис и научимся создавать окна.
А пока поделитесь насколько сложно вам было осваивать оконные функции?
🤯 - сложно
🥱 - изи
#харды #sql