sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur räknar man upp grupper av partitioner i min Postgres-tabell med fönsterfunktioner?

Du verkar vilja ha något som 1 mer än den ackumulerade summan av delarna. Den enklaste metoden är:

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

Om part kan anta andra värden än 0 och 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;


  1. Laravel:Hur man använder flera pivottabellrelationer

  2. Skapa tabeller och problem med primärnyckeln i Rails

  3. Tilldela resultatet av dynamisk sql till variabel

  4. Behöver MySQL INSERT - SELECT-fråga för tabeller med miljontals poster