PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wyliczyć grupy partycji w mojej tabeli Postgres za pomocą funkcji okna?

Wydaje się, że chcesz coś o 1 więcej niż skumulowaną sumę części. Najprostsza metoda to:

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

Jeśli part może przyjmować wartości inne niż 0 i 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails 3, ActiveRecord, PostgreSQL - polecenie .uniq nie działa?

  2. Archiwum WAL:NIEUDANE (upewnij się, że skonfigurowano wysyłkę WAL)

  3. jak sprawić, by postgres ignorował wstawki ze zduplikowanym kluczem, ale idź dalej?

  4. Zapętlanie w wybranym zapytaniu

  5. Znalezienie największej grupy kolejnych liczb w obrębie partycji