SELECT
name,
salary,
RANK() OVER (PARTITION BY dept ORDER BY salary DESC) AS rank,
SUM(salary) OVER (PARTITION BY dept) AS dept_total,
AVG(salary) OVER () AS company_avg
FROM employees;ROW_NUMBER() — порядковый номер в окнеRANK() / DENSE_RANK() — ранг (с пропусками / без)LAG(col, n) / LEAD(col, n) — значение из предыдущей/следующей строкиSUM / AVG / MAX OVER (...) — агрегаты по окну без GROUP BYGROUP BY сворачивает строки в одну. Window function сохраняет все строки и добавляет вычисленное значение к каждой.