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

Nhận các khoảng thời gian chồng chéo của phong bì. I.e

Hãy thử cái này, quá. Tôi đã thử nghiệm nó tốt nhất có thể, tôi tin rằng nó bao gồm tất cả các khả năng, bao gồm cả việc kết hợp các khoảng liền kề (10:15 đến 10:30 và 10:30 đến 10:40 được kết hợp thành một khoảng duy nhất, 10:15 đến 10:40 ). Nó cũng khá nhanh, nó không sử dụng nhiều.

with m as
        (
         select ip_address, start_time,
                   max(stop_time) over (partition by ip_address order by start_time 
                             rows between unbounded preceding and 1 preceding) as m_time
         from ip_sessions
         union all
         select ip_address, NULL, max(stop_time) from ip_sessions group by ip_address
        ),
     n as
        (
         select ip_address, start_time, m_time 
         from m 
         where start_time > m_time or start_time is null or m_time is null
        ),
     f as
        (
         select ip_address, start_time,
            lead(m_time) over (partition by ip_address order by start_time) as stop_time
         from n
        )
select * from f where start_time is not null
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL để dịch một danh sách các số được so khớp với một số phạm vi, thành một danh sách các giá trị

  2. SQL Select biểu tượng gì || nghĩa là?

  3. Oracle-XMLTYPE:Cách cập nhật giá trị

  4. Cách tìm Lịch sử chờ đợi của phiên Oracle

  5. ORA-00932:kiểu dữ liệu không nhất quán:mong đợi - có CLOB