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

Chỉ chọn các hàng có một cột được thay đổi so với các hàng trước nó, được cung cấp một ID duy nhất

Đây là một vấn đề khoảng trống và đảo. Bạn muốn điểm bắt đầu của mỗi hòn đảo, mà bạn có thể xác định bằng cách so sánh trạng thái trên hàng hiện tại với trạng thái trên bản ghi "trước đó".

Các chức năng của cửa sổ rất hữu ích cho việc này:

select t.*
from (
    select t.*, lag(status) over(partition by personID order by unixtime) lag_status
    from mytable t
) t
where lag_status is null or status <> lag_status



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chạy nhiều giao dịch đồng thời trong PostgreSQL

  2. Cloud9 postgres

  3. Date_trunc của PostgreSQL trong mySQL

  4. Cài đặt PostgreSQL trên Ubuntu 18.04

  5. Chọn ba giá trị hàng đầu trong mỗi nhóm