PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Đếm vị trí cột thay đổi thành giá trị cụ thể trong postgres

Sử dụng lag để nhận giá trị trên hàng trước và đếm sau đó dựa trên các điều kiện.

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)

Hoặc nó có thể được đơn giản hóa thành

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. Giải pháp thay thế tốt nhất để đặt lược đồ PostgreSQL bằng PHP PDO

  2. Kết nối với cơ sở dữ liệu PostgreSQL thông qua đường hầm SSH bằng Python

  3. Làm cách nào để tránh đệ quy trong trình kích hoạt cập nhật thực hiện cập nhật?

  4. Postgis / Geodjango:Không thể xác định phiên bản PostGIS cho cơ sở dữ liệu

  5. Tìm id cha khi tất cả các con chia sẻ cùng một giá trị