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() — sequential number within the windowRANK() / DENSE_RANK() — rank (with gaps / without gaps)LAG(col, n) / LEAD(col, n) — value from the previous/next rowSUM / AVG / MAX OVER (...) — aggregates over the window without GROUP BYGROUP BY collapses rows into one. A window function keeps all rows and adds a computed value to each.