PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como enumerar grupos de partições na minha tabela Postgres com funções de janela?


Você parece querer algo como 1 a mais do que a soma cumulativa das partes. O método mais simples é:
select t.*,
       (case when part = 1 then 0  -- the easy case
             else 1 + sum(part) over (order by id)
        end) as number
from t;

Se part pode assumir valores diferentes de 0 e 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;