PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie erhalte ich die Änderungsnummer?

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 _;