Anda dapat mencapai ini dengan menumpuk dua fungsi jendela - yang pertama untuk mendapatkan apakah src
nilai berubah dari baris sebelumnya, yang kedua untuk menjumlahkan jumlah perubahan. Sayangnya Postgres tidak mengizinkan fungsi jendela bersarang secara langsung, tetapi Anda dapat mengatasinya
dengan subkueri:
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 _;