Du kan uppnå detta genom att kapsla två fönsterfunktioner - den första för att ta reda på om src
värde ändrat från föregående rad, den andra för att summera antalet ändringar. Tyvärr tillåter inte Postgres kapslingsfönsterfunktioner direkt, men du kan komma runt det
med en underfråga:
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 _;