PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment énumérer des groupes de partitions dans ma table Postgres avec des fonctions de fenêtre ?

Vous semblez vouloir quelque chose comme 1 de plus que la somme cumulée des parties. La méthode la plus simple est :

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 peut prendre des valeurs autres que 0 et 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;