SQLLab
Глоссарий/PARTITION BY
Оконные функцииСредний

PARTITION BY

Делит строки на разделы для оконной функции. Аналог GROUP BY, но без схлопывания строк.

Синтаксис
function() OVER (PARTITION BY col1, col2 ORDER BY col3)

Объяснение

PARTITION BY сбрасывает вычисление оконной функции для каждого раздела. Без PARTITION BY — одно окно на весь результат. Пример: SUM(salary) OVER (PARTITION BY department) — для каждой строки покажет сумму зарплат её отдела.

Пример

-- Зарплата сотрудника и доля от суммы по отделу
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;