Bạn có thể đạt được điều này bằng cách lồng hai hàm cửa sổ - hàm đầu tiên để lấy liệu src
giá trị thay đổi so với hàng trước đó, thứ hai để tổng số thay đổi. Rất tiếc, Postgres không cho phép trực tiếp các chức năng cửa sổ lồng nhau, nhưng bạn có thể giải quyết vấn đề đó
với một truy vấn con:
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 _;