Du kan opnå dette ved at indlejre to vinduesfunktioner - den første til at finde ud af, om src
værdi ændret fra den forrige række, den anden for at summere antallet af ændringer. Desværre tillader Postgres ikke indlejringsvinduefunktioner direkte, men det kan du omgå
med en underforespørgsel:
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 _;