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

Truy vấn sql Oracle để nhóm các bản ghi liên tiếp theo ngày

Giả sử chúng ta chỉ có thể sử dụng start_date để xác định các bản ghi liền kề (tức là không có khoảng trống), sau đó bạn có thể sử dụng phương pháp tiếp cận sự khác biệt của số hàng:

select id, min(start_date) as mn_date, max(end_date) as mx_date, rate
from (select t.*,
             row_number() over (partition by id order by start_date) as seqnum_i,
             row_number() over (partition by id, rate order by start_date) as seqnum_ir
      from t
     ) t
group by id (seqnum_i - seqnum_ir), rate;

Để xem cách này hoạt động như thế nào, hãy xem kết quả của truy vấn con. Bạn sẽ có thể "thấy" sự khác biệt của hai số hàng xác định các nhóm bản ghi liền kề với cùng một tỷ lệ như thế nào.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Hàm trả về tháng từ một ngày trong Oracle

  2. tạo cột id dựa trên dữ liệu hoạt động

  3. Làm cách nào để lấy các ký tự được đánh số lẻ trong một chuỗi bằng SQL

  4. Khớp các giá trị cột trùng lặp của Oracle bằng cách sử dụng Soundex, Jaro Winkler và Chỉnh sửa Khoảng cách (UTL_MATCH)

  5. Trục động trong sql oracle