Możesz to osiągnąć, zagnieżdżając dwie funkcje okna — pierwszą, która sprawdza, czy src
wartość zmieniona z poprzedniego wiersza, druga to suma ilości zmian. Niestety Postgres nie pozwala na bezpośrednie zagnieżdżanie funkcji okna, ale możesz to obejść
z podzapytanie:
SELECT
id,
src,
sum(incr) OVER (ORDER BY id)
FROM (
SELECT
*,
(lag(src) OVER (ORDER BY id) IS DISTINCT FROM src)::int AS incr
FROM example
) AS _;