sql >> Databáze >  >> RDS >> PostgreSQL

Jak vyčíslit skupiny oddílů v mé tabulce Postgres s funkcemi okna?

Zdá se, že chcete něco jako 1 více, než je kumulativní součet částí. Nejjednodušší metoda je:

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

Pokud part může nabývat hodnot jiných než 0 a 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. MySQL (nebo PHP?) seskupuje výsledky podle dat pole

  2. SQL WHERE podmínka se nerovná?

  3. Jak odstranit konfigurační parametr

  4. Vyjmout řetězec po prvním výskytu znaku