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

Policz gdzie kolumna zmienia się na określoną wartość w postgresie

Użyj lag aby uzyskać wartość z poprzedniego wiersza i policzyć później na podstawie warunków.

select count(*)
from (select action_date,action,lag(action) over(order by action_date) as prev_action
      from t
     ) t
where (action<>prev_action and action=1) or (action=1 and prev_action is null)

Lub można go uprościć jako

select 
count(case when lag(action) over(order by action_date) is null then and action = 1 then 1
           when lag(action) over(order by action_date) is not null and lag(action) over(order by action_date) <> action and action = 1 then 1 
      end) as cnt
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. Wiele formuł w PostgreSQL

  2. serwer węzłów nie może połączyć się z postgres db

  3. chown:/var/lib/postgresql/data/postgresql.conf:system plików tylko do odczytu

  4. PostgreSQL nie może się połączyć:nie znaleziono definicji usługi

  5. Java - data zapisana jako dzień wcześniej