Window function liczy wartość na „oknie” wierszy powiązanych z bieżącym wierszem, bez zwijania wierszy jak GROUP BY. Use case: ranking (ROW_NUMBER), sumy narastające, „top N per grupa”.
SELECT user_id,
amount,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM payments;