Sie können dies erreichen, indem Sie zwei Fensterfunktionen verschachteln - die erste, um zu ermitteln, ob die src
Wert, der sich gegenüber der vorherigen Zeile geändert hat, der zweite, um die Anzahl der Änderungen zu summieren. Leider erlaubt Postgres keine direkte Verschachtelung von Fensterfunktionen, aber Sie können das umgehen
mit einer Unterabfrage:
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 _;