В инете очень много шпаргалок, задач, но когда я учился только не было понимания с чего начать и как все это работает с нормальными картинками и объяснениями.
Решил выпустить очередной гайд, в котором описано практически все, что можно узнать про оконные функции: оптимизация, сортировка, партиции, RANGE, ROWS и так далее.
Кстати, интересный вопрос:
Что отработает в примерах ниже быстрее? Оконка или JOIN? В каких условиях один вариант начнет сильно проигрывать другому?
🐸 Пример с оконкой
SELECT
user_id,
date,
revenue,
revenue / SUM(revenue) OVER (PARTITION BY date) AS share
FROM orders
🐸 Пример с агрегацией
WITH daily AS (
SELECT date, SUM(revenue) AS total_rev
FROM orders
GROUP BY date
)
SELECT
o.user_id,
o.date,
o.revenue,
o.revenue / d.total_rev AS share
FROM orders o
JOIN daily d USING (date)
🔗 Ссылочку дублирую еще и тут на гайд: ССЫЛКА
🔥 Свой ответ пишите в комментариях, будет интересно почитать ваши мысли! Поставьте реакции, если хотите разбор ответа.
@zasql_python