Vous pouvez y parvenir en imbriquant deux fonctions de fenêtre - la première pour savoir si le src
valeur modifiée par rapport à la ligne précédente, la seconde pour additionner le nombre de modifications. Malheureusement, Postgres n'autorise pas l'imbrication directe des fonctions de fenêtre, mais vous pouvez contourner ce problème
avec une sous-requête :
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 _;