PARTITION BY
Делит строки на разделы для оконной функции. Аналог GROUP BY, но без схлопывания строк.
function() OVER (PARTITION BY col1, col2 ORDER BY col3)
Объяснение
Пример
-- Зарплата сотрудника и доля от суммы по отделу SELECT name, department, salary, SUM(salary) OVER (PARTITION BY department) AS dept_total, ROUND(salary * 100.0 / SUM(salary) OVER (PARTITION BY department), 1) AS pct FROM employees;
Связанные термины
Анекдоты по теме
— Почему оконные функции не ходят на свидания вслепую? — Потому что им нужно знать OVER (PARTITION BY кто_пришёл ORDER BY красота DESC), иначе они не знают, как себя вести.
— Доктор, у меня шизофрения. — Это лечится. Расскажите подробно. — WITH моей_личности AS (SELECT боль, радость, тревогу, ROW_NUMBER() OVER (PARTITION BY день_недели ORDER BY кофеин DESC) FROM психика)... Ой, кажется, я только что создал три новых партиции самосознания.
— Что такое FRAME в оконных функциях? — Часть окна, над которой считается функция для текущей строки. — Например? — ROWS BETWEEN 2 PRECEDING AND CURRENT ROW — скользящее среднее за 3 строки. — А UNBOUNDED PRECEDING? — От начала окна до текущей строки. Нарастающий итог.