Window functions melakukan kalkulasi di seluruh set baris (sebuah "window") yang terkait dengan baris saat ini, tanpa menggabungnya menjadi satu baris output (tidak seperti agregat dengan GROUP BY). Mereka memungkinkan analytics yang powerful — total berjalan, ranking, perbandingan dengan baris lain — sambil mempertahankan setiap baris dalam hasil.
Perbedaan kunci dari 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.
