PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Hitung di mana kolom berubah ke nilai tertentu di postgres

Gunakan lag untuk mendapatkan nilai pada baris sebelumnya dan menghitung setelahnya berdasarkan ketentuan.

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)

Atau bisa disederhanakan menjadi

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. Bidang pembaruan SQL dari satu tabel dari bidang yang lain

  2. PostgreSQL:dari OID ke Bytea

  3. Bagaimana cara membuat Kunci Utama memiliki digit X di PostgreSQL?

  4. Streaming baris dari PostgreSQL (dengan ukuran pengambilan)

  5. Pembagian / normalisasi datetime SQL/Postgres