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

Đạt được chuỗi tuần tự tối đa với các sự kiện

Bản năng của bạn rất tốt trong việc xem xét các hàng không có sự kiện nào và xử lý chúng. Chúng ta có thể sử dụng một truy vấn con có hàm cửa sổ để lấy "khoảng cách" giữa các ngày không có sự kiện và sau đó trong một truy vấn bên ngoài, nó sẽ lấy bản ghi mà chúng ta muốn, như sau:

select * 
from (
  select date as day_after_streak
   , lag(date) over(order by date asc) as previous_zero_date 
   , date - lag(date) over(order by date asc) as difference
   , date_part('days', date - lag(date) over(order by date asc) ) - 1 as streak_in_days
  from dates

  group by date
  having sum(events) = 0 ) t 
where t.streak_in_days is not null
order by t.streak_in_days desc
limit 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để liên kết bảng tính Google với PostgreSQL?

  2. pg_dump với --exclude-table vẫn bao gồm các bảng đó trong các lệnh COPY nền mà nó chạy?

  3. PostgreSQL initdb (Khởi tạo cơ sở dữ liệu) trên Linux

  4. Chiến lược hiệu quả để để lại dấu vết kiểm tra / lịch sử thay đổi cho các ứng dụng DB?

  5. Nhập ENUM trong SQLAlchemy với PostgreSQL