Можете да постигнете това чрез влагане на две прозоречни функции - първата, която получава дали src
стойност, променена от предишния ред, вторият за сумиране на броя промени. За съжаление Postgres не позволява директно влагане на прозоречни функции, но можете да заобиколите това
с подзаявка:
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 _;