Window functions realizam cálculos em um conjunto de linhas (uma "janela") relacionadas à linha atual, sem colapsá-las em uma única linha de saída (diferentemente de agregados com GROUP BY). Elas permitem análises poderosas — totais correntes, rankings, comparações com outras linhas — mantendo cada linha no resultado.
A diferença chave do GROUP BY
GROUP BY → collapses groups into ONE row each (you lose individual rows)
Window function → computes across related rows but KEEPS every row
→ You get per-row detail AND aggregate/ranking info together.
