sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo enumerar grupos de particiones en mi tabla de Postgres con funciones de ventana?

Parece que quieres algo como 1 más que la suma acumulada de las partes. El método más simple es:

select t.*,
       (case when part = 1 then 0  -- the easy case
             else 1 + sum(part) over (order by id)
        end) as number
from t;

Si part puede tomar valores distintos de 0 y 1:

select t.*,
       (case when part = 1 then 0  -- the easy case
             else 1 + sum( (part = 1)::int ) over (order by id)
        end) as number
from t;